Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用字符类检查用户提示的SSN是否有效?_Java_Character - Fatal编程技术网

Java 如何使用字符类检查用户提示的SSN是否有效?

Java 如何使用字符类检查用户提示的SSN是否有效?,java,character,Java,Character,我是计算机科学的新手,我有一个任务,要求我使用字符类创建一个静态布尔方法,验证用户是否输入了SSN。可接受的格式仅为XXXXXXXX或XXX-XX-XXXX。我知道我应该使用Character.isDigit()或charAtString,但我已经尝试过了,但它不起作用 如果这是一个愚蠢的问题,我很抱歉,我将感谢您的指导 谢谢 布兰登 import java.util.Scanner; // INPUTS SCANNER public class SSNValidator { publ

我是计算机科学的新手,我有一个任务,要求我使用字符类创建一个静态布尔方法,验证用户是否输入了SSN。可接受的格式仅为XXXXXXXX或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");   
}

}我建议您使用以下算法:

  • 如果字符串输入的大小为9-在所有字符上循环并确认(isDigit())它们是数字后返回true。(这是XXXXXXXXX的第一个用例)
  • 否则,如果输入字符串的大小为11,并且第3和第6位置的字符为“-”,则在循环所有剩余字符并确认(isDigit())它们是数字后返回true。(这是XXX-XX-XXXX的第二个用例)。循环时,应跳过第3和第6位置的isDigit()检查
  • 否则,返回false(与用例不匹配)
  • 如前所述,解决方案的核心是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
    

    想一想你想检查什么:你想检查每一个数字,并检查它实际上是一个数字,而不是其他字符。通常在编程中,每当你有一个“我想对组中的每一项做同样的事情”时,通常是时候使用循环了。在您的情况下,它将检查每个字符是否是一个数字,在每个SSN中一次一个数字。唯一的例外是SSN的长度为9或11个字符——这将告诉您用户是否在数字的3段之间输入了
    -
    字符。希望这能为你指明正确的方向。谢谢,它做到了!酷。将for(char ssnNo:str.toCharArray(ssn)替换为for(char ssnNo:ssn.toCharArray()