Java 如何使用字符类检查用户提示的SSN是否有效?
我是计算机科学的新手,我有一个任务,要求我使用字符类创建一个静态布尔方法,验证用户是否输入了SSN。可接受的格式仅为XXXXXXXX或XXX-XX-XXXX。我知道我应该使用Character.isDigit()或charAtString,但我已经尝试过了,但它不起作用 如果这是一个愚蠢的问题,我很抱歉,我将感谢您的指导 谢谢 布兰登Java 如何使用字符类检查用户提示的SSN是否有效?,java,character,Java,Character,我是计算机科学的新手,我有一个任务,要求我使用字符类创建一个静态布尔方法,验证用户是否输入了SSN。可接受的格式仅为XXXXXXXX或XXX-XX-XXXX。我知道我应该使用Character.isDigit()或charAtString,但我已经尝试过了,但它不起作用 如果这是一个愚蠢的问题,我很抱歉,我将感谢您的指导 谢谢 布兰登 import java.util.Scanner; // INPUTS SCANNER public class SSNValidator { publ
import java.util.Scanner; // INPUTS SCANNER
public class SSNValidator {
public static boolean isValidSSN(String ssn) {
}
public static void main(String[]args){
Scanner input = new Scanner(System.in);
String programState = "running";
do {
System.out.println("Enter a SSN(Quit/quit to exit):\n");
} while ((!programState.equals("yes")) && (!programState.equals("Yes")));
System.out.println("Exiting Program.\n");
}
}我建议您使用以下算法:
String str = "lmn67up94h";
for(char c : str.toCharArray()) {
if(Character.isDigit(c)) {
System.out.println("Got digit : " + c);
}
}
输出为:
Got digit : 6
Got digit : 7
Got digit : 9
Got digit : 4
想一想你想检查什么:你想检查每一个数字,并检查它实际上是一个数字,而不是其他字符。通常在编程中,每当你有一个“我想对组中的每一项做同样的事情”时,通常是时候使用循环了。在您的情况下,它将检查每个字符是否是一个数字,在每个SSN中一次一个数字。唯一的例外是SSN的长度为9或11个字符——这将告诉您用户是否在数字的3段之间输入了
-
字符。希望这能为你指明正确的方向。谢谢,它做到了!酷。将for(char ssnNo:str.toCharArray(ssn)替换为for(char ssnNo:ssn.toCharArray()