如何使用Character Class检查用户提示SSN是否有效?

问题描述 投票:4回答:1

我是计算机科学的新手,我有一个任务,要求我使用Character Class创建一个静态布尔方法,该方法验证用户是否输入了SSN。可接受的格式仅为XXXXXXXXX或XXX-XX-XXXX。我知道我应该使用Character.isDigit()或charAtString但我已经尝试过它们并不起作用。

如果这是一个愚蠢的问题,我很抱歉,我将非常感谢您的指导。

谢谢,

布兰登

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");   
}

}

java character
1个回答
1
投票

我建议你使用以下算法:

  1. 如果字符串输入的大小为9 - 在循环所有字符并确认(isDigit())后返回true,则它们是数字。 (这是XXXXXXXXX的第一个用例)。
  2. 否则,如果输入字符串的大小为11,并且第3和第6位的字符为“ - ” - 在循环所有剩余字符并确认(isDigit())后返回true,它们是数字。 (这是XXX-XX-XXXX的第二个用例)。循环时,您应跳过第3和第6个位置的isDigit()检查。
  3. 否则,返回false(与用例不匹配)。

正如之前由Davy M所述 - 解决方案的核心是isDigit检查的重复循环。这段代码应该是如何执行此操作的一个很好的参考:

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
© www.soinside.com 2019 - 2024. All rights reserved.