- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我应该编写一个程序,将 SSN 作为字符串读取,包括破折号,例如 DDD-DD-DDDD,其中“D”是数字。如果它有效,它会打印“valid ssn”,如果它无效则相反。我应该有四种方法:main、public static boolean validSSN(String s)、public boolean isDigit(char c) 和 public boolean isDash(char c)。最后两个应该在方法 public static boolean validSSN(String s) 中调用。我们目前正在研究字符串和文本 I/O。我知道如何使用 java.io.File 读取字符串,但除此之外,我不知所措。这是我目前所拥有的:
import java.io.File;
import java.util.Scanner;
public class Lab14 {
public static void main(String[] args)throws Exception {
File file = new File("C:\\Documents and Settings\\Russell\\Desktop\\Social-Security-Numbers.txt");
Scanner input = new Scanner(file);
String case1 = input.nextLine();
String case2 = input.nextLine();
String case3 = input.nextLine();
String case4 = input.nextLine();
input.close();
System.out.println("The first case is: " + case1 + ". This is a " + validSSN(case1) + " entry.");
System.out.println("The second case is: " + case2 + ". This is a " + validSSN(case2) + " entry.");
System.out.println("The third case is: " + case3 + ". This is a " + validSSN(case3) + " entry.");
System.out.println("The fourth case is: " + case4 + ". This is a " + validSSN(case4) + " entry.");
}
public static boolean validSSN(String s){
if (s.length() == 11){
if((isDash(s.charAt(3))==true) && isDash(s.charAt(6))==true){
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(isDigit(s.charAt(i))==false)
return false;
}
}
return true;
}
else
return false;
}
public static boolean isDigit(char c){
if((c == '0') || (c == '1') || (c == '2') || (c == '3') ||
(c == '4') || (c == '5') || (c == '6') || (c == '7') ||
(c == '8') || (c == '9'))
return true;
else
return false;
}
public static boolean isDash(char c){
if(c == '-')
return true;
else
return false;
}
我更喜欢帮助而不是答案,因为我刚刚开始学习如何编码。
回答
import java.io.File;
import java.util.Scanner;
public class Lab14 {
public static void main(String[] args)throws Exception {
File file = new File("C:\\Documents and Settings\\Russell\\Desktop\\Social-Security-Numbers.txt");
Scanner input = new Scanner(file);
String case1 = input.nextLine();
String case2 = input.nextLine();
String case3 = input.nextLine();
String case4 = input.nextLine();
input.close();
System.out.println("The first case is: " + case1 + ". This is a " + validSSN(case1) + " entry.");
System.out.println("The second case is: " + case2 + ". This is a " + validSSN(case2) + " entry.");
System.out.println("The third case is: " + case3 + ". This is a " + validSSN(case3) + " entry.");
System.out.println("The fourth case is: " + case4 + ". This is a " + validSSN(case4) + " entry.");
}
public static boolean validSSN(String s){
if (s.length() == 11){
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(isDigit(s.charAt(i))==true && ((isDash(s.charAt(3))==true) && isDash(s.charAt(6))==true)){
return true;
}
else
return false;
}
return false;
}
else return false;
}
public static boolean isDigit(char c){
if((c == '0') || (c == '1') || (c == '2') || (c == '3') ||
(c == '4') || (c == '5') || (c == '6') || (c == '7') ||
(c == '8') || (c == '9'))
return true;
else
return false;
}
public static boolean isDash(char c){
if(c == '-')
return true;
else
return false;
}
最佳答案
我将勾勒出我认为您可以通过一些逻辑和谷歌搜索轻松解决的问题。
validSSN(String s)
的字符串中的每个字符,例如:
s = '123-45-6789'
您想遍历 1,然后 2,等等。这些字符中的每一个都在字符串“s”中占据一个位置,从索引 0 到 10 开始。
谷歌一下,看看你找到了什么。如果您没有看到有用的信息,请查看 this link .
isDigit(char c)
方法,或者一个破折号,对于 isDash(char c)
。Google“检查 char 是否为数字 java”。如果您没有找到任何东西,请参阅 link .测试 char 是否为破折号,'-' 应该很容易找到。
这应该处理 isDigit(char c)
和 isDash(char c)
。
validSSN(String s)
中实现一些逻辑,以便在遍历每个字符时检查:a) 如果在适当的索引处字符是数字,否则返回 false
b) 如果在适当的索引处字符是破折号,否则返回 false
如果所有字符都通过你的逻辑,则返回 true。
您的主体中还有一些代码,我不确定发生了什么,即
String case1 = input.nextLine();
String case2 = input.nextLine();
String case3 = input.nextLine();
String case4 = input.nextLine();
但我认为一旦您完成 1. 到 3. 工作,您就万事大吉了。
[编辑以解决您的错误:
剧透警告 如果您继续阅读,我会给出答案。因此,坚持下去,如果您放弃了,请查看下文并弄清楚为什么这样做有效而您的代码无效。
所以对于 if-else 逻辑,我更喜欢先测试某件事是否为假,可能有几种情况,所以当你通过所有这些时,然后返回真。可能有更好的方法来编写以下代码,但我认为这是可以理解的:
public static boolean validSSN(String s){
// don't bother doing anything else if the length is wrong
if (s.length() != 11) { return false; }
else {
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// now that you have c, use it. Don't do s.charAt(i) again.
// if index is both {not 3 AND not 6} do...
if ((i != 3) && (i != 6)) {
// you don't need to check "isDigit(s.charAt(i))==false"
if (!isDigit(c)) { return false; } // if not numeric, return false
}
// here we are either index i=3 OR i=6, so if c is not a dash return false
else if (!isDash(c)) { return false; }
}
// at this point we exhausted our loop and couldn't
// find anything false, so return true
return true;
}
}
结束编辑]
关于java - 使用字符串验证 SSN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958414/
首先要声明我对正则表达式很糟糕。我想在字符串中查找社会保障号的每个实例,并屏蔽除破折号 (-) 和 SSN 的最后 4 个之外的所有实例。 示例 String someStrWithSSN = "Th
我正在尝试创建一个文本区域注释字段的快速验证,以查看它是否可能包含 SSN 号码,然后我将发出警报。 我尝试了在网上找到的几种不同的正则表达式模式,但它们似乎都不起作用。我想知道我的 javascri
这是我的代码,我知道这个问题或类似问题之前已经发布过。我遇到的冲突是我不应该使用“正则表达式”。我知道这是编写该程序的一种更简单的方法,但我们在类里面还没有讨论过这一点。我不是在寻找简单的答案,只是寻
如何在文本框中屏蔽 SSN,并在使用 JQuery 加载页面时仅显示 SSN 的最后 4 位数字? 最佳答案 如果您使用 jQuery 屏蔽它,那么您已经遇到了安全漏洞。您需要在服务器端对其进行屏蔽,
如何在字符串中屏蔽 SSN? 我有以下场景 string str1 = "asdasfasdfasdf sfhagfdad SSN:123456789"; 我需要的输出 "asdasfasdfasdf
您好,我需要 c sharp 中的正则表达式才能以 xxx-xx-6789 的格式显示 SSN。即 123456789 应在文本字段中显示为 xxx-xx-6789。我现在写的代码是 string S
我应该编写一个程序,将 SSN 作为字符串读取,包括破折号,例如 DDD-DD-DDDD,其中“D”是数字。如果它有效,它会打印“valid ssn”,如果它无效则相反。我应该有四种方法:main、p
我可以通过哪些不同的方式来修改包含 ssn 的字符串 123-45-8999 变成 XXX-XX-8999 ? 必须使用字符串成员函数来完成。 谢谢! 最佳答案 尝试 replace : std::s
我有一个巨大的 VARCHAR 字段,它是电子邮件的正文。电子邮件的两边可以有任何类型的文本。我想看看是否有人在文本中的任何地方列出了他们的社会安全号码。 在WHERE子句中,我试过了 WHERE X
我有一个项目需要在前端验证美国社会保险号(格式 ddd-dd-dddd)。一个建议是使用散列算法,但考虑到使用的字符集很小 ( [0-9] ),这将是灾难性的。以高概率验证数字是否正确并允许后端执行最
我有一个文本字段,用户输入 SSN 号码。在进入自身时,它应该格式化。就像在更改 textField 时...它应该在显示器本身上以这种方式格式化 999-999-999。 最佳答案 来自@kotte
这个问题在这里已经有了答案: SSN Regex for 123-45-6789 OR XXX-XX-XXXX (6 个答案) 关闭 7 年前。 我在 C# 中有一个方法说 FormatSSN,它采
我目前正在开发一个我们接收私有(private)健康信息的应用程序。最大的担忧之一是 SSN。目前,我们没有将 SSN 用于任何事情,但 future 我们希望能够使用它来唯一地识别多个设施中的患者。
我正在尝试使用过滤器来屏蔽 SSN 的前 5 位数字,它应该看起来像这样 XXX-XX-1234 到目前为止我想出了什么: // {{SocialSecurityNumber | ssn}} angu
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Regular expression for SSN and phone number ^(?!.*(\\d{16}
我想编写一个 SQL 查询,为所有用户提供 user_id、last_name 和 Social_security_number,这些用户的另一个用户具有相同的姓氏和相同的 SSN 最后四位 RIGH
我只想在社会安全号码离开文本框后显示其最后四位数字。 AJax 是否有一个我不知道的工具?我怎样才能做到这一点?我想用“*”替换数字。我在.NET 工作。 Ajax 也可以访问。 最佳答案 据我所知,
我的主要问题是我想检查具有相同 SSN 的人是否在我们这里拥有多个帐户。目前,所有个人身份信息都已加密,解密需要很长时间。 我最初的想法是在数据库中的用户列中添加一个 ssn 列。然后我可以简单地进行
我在 C# 中有以下正则表达式代码。 ^((?!(\d{3}-?\d{2}-?\d{4})).)*$") 我唯一关心的是文本框与 ssn 不匹配。 [###-##-####]我如何使正则表达式匹配 S
我想创建一个网络应用: 使用 csv 获取个人数据(包括 SSN) 在浏览器 javascript 中处理和操作数据 输出pdf 既然一切都发生在浏览器中,并且没有任何数据存储在 Web 主机的数据库
我是一名优秀的程序员,十分优秀!