Вы можете попытаться посчитать количество штрихов, чтобы утверждать, что их два. Затем попробуйте проанализировать входные данные SSN с удаленными тире в виде целого числа. Если эта операция разбора не выдает исключение, то ввод действителен.
String ssn = input.next();
int numDashes = ssn.length() - ssn.replace("-", "").length();
boolean canParse = true;
try {
int ssnInt = Integer.parseInt(ssn.replace("-", ""));
}
catch (NumberFormatException nfe) {
canParse = false;
}
if (numDashes == 2 && canParse) {
System.out.printf("%s is a valid social security number", ssn);
}
else {
System.out.printf("%s is an invalid social security number", ssn);
}
Конечно, вы также можете упростить жизнь, просто используя регулярное выражение:
if (ssn.matches("\\d{3}-\\d{2}-\\d{4}")) {
// VALID
}
Но , возможно, ваше назначение не позволяет использовать регулярные выражения.