所以我需要编写一个程序来决定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是无效的社会安全号码。