gpt4 book ai didi

java - 我需要以非常具体的方式验证 SSN

转载 作者:行者123 更新时间:2023-12-02 03:43:41 27 4
gpt4 key购买 nike

这是我的代码,我知道这个问题或类似问题之前已经发布过。我遇到的冲突是我不应该使用“正则表达式”。我知道这是编写该程序的一种更简单的方法,但我们在类里面还没有讨论过这一点。我不是在寻找简单的答案,只是寻找提示。

public class SSNValidatorApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ssn = Validator.getSSN(sc, "Enter a Social Security Number: ");

System.out.println("You entered: " + ssn);
}
}

所以这是第一个显示输出的类,

public static boolean isDigit(char c) {
return Character.isDigit(c);
}

public static boolean isDash(char c) {
return (c == '-');
}

public static String getSSN(Scanner sc, String prompt) {
System.out.println(prompt);
String ssn = sc.next();
String tryAgain = "y";

while (tryAgain.equalsIgnoreCase("y")) {
if (ssn.length() != 11) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}

for (int i = 0; i < ssn.length(); i++) {
if (i <= 2) {
if (!isDigit(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
else if (i == 3) {
if (!isDash(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
}
else if (i == 6) {
if (!isDash(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}

}
else if (i > 6) {
if (!isDigit(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
}
}
}

tryAgain = Validator.getString(sc, "Would you like to re-enter your SSN? (y/n): ");
System.out.println();
}

return ssn;
}

我的代码中的问题来自于最后,它应该询问用户“您想重新输入您的 SSN吗?他们回答 y 或 n 唯一的问题是当他们回答时,它继续说“DDD-DD-DDDD”不是有效的 SSN”。这是我拥有的大量 if/else if/for/while 语句的问题吗?

谢谢。

最佳答案

您应该在循环开始时向用户查询 ssn,即将 String ssn = sc.next(); 放在 while block 的顶部。

当前,您正在查询用户一次,在 while block 之后,您将重用 ssn 的值,而不是在验证之前请求新的值。

关于java - 我需要以非常具体的方式验证 SSN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551776/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com