如何判断SSN格式是否正确

时间:2017-10-23 02:41:41

标签: java string

所以我需要编写一个程序来决定SSN是否有效。我之前在这里发过这个问题,但看起来其他人都在使用比我到目前为止学到的东西更先进的东西。到目前为止我有这个:

import java.util.Scanner; 

public class Homework4_21 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);

        System.out.print("Enter a SSN: ");

        String ssn = input.next();
        String number = (String.valueOf('0') + 
                String.valueOf('1') + 
                String.valueOf('2') + 
                String.valueOf('3') + 
                String.valueOf('4') + 
                String.valueOf('5') + 
                String.valueOf('6') + 
                String.valueOf('7') + 
                String.valueOf('8') + 
                String.valueOf('9'));




    if ((number.contains(ssn.substring(0, 1))) && (number.contains(ssn.substring(1, 2))) && (number.contains(ssn.substring(2, 3))) && (ssn.substring(3, 4) == String.valueOf('-')) && (number.contains(ssn.substring(4, 5))) && (number.contains(ssn.substring(5, 6))) && (ssn.substring(6, 7) == String.valueOf('-')) && (number.contains(ssn.substring(7, 8))) && (number.contains(ssn.substring(8, 9))) && (number.contains(ssn.substring(9, 10))) && (number.contains(ssn.substring(10, 11))) && (ssn.length() == 11) )

        System.out.print(ssn + " is a valid social security number.");

    else
        System.out.print(ssn + " is an invalid social security number.");





    }

}

我的想法是我创建一个字符串'number',其中包含0-9之间的所有数字,然后将其与字符串'ssn'中的每个数值进行比较,以确保这些空格中没有字母或字符。我还检查' - '是否放在正确的位置。 现在我的问题是每当我输入有效的SSN时,我得到无效的响应。 我测试了if语句的每个部分,以确保每个子字符串提供正确的值。例如输入

  

输入SSN:123-45-6789

会打印

  

123-45-6789是无效的社会安全号码。

0 个答案:

没有答案