我在第七周的“Java编程入门”课程中。第五周的任务是:“编写一个程序,提示用户输入DDDD格式的社会保险号码,其中D是一个数字(0-9)。您的程序应该检查输入是否有效。”
我最初没有提交任何东西,因为这本书(YDaniel梁的“Java编程入门”)和我的导师在讨论将双字符串转换为字符串和验证它们的格式时没有真正的意义。
我希望YouTube、谷歌或其他一些来源能帮助我解决这个问题;然而,解决方案包括"Regex“和其他我们尚未接近讨论的实用程序。我会得到一个F的任何东西,我无法复制和解释星期二,所以真正深入,老练的解决方案是不可能在这里。
有什么建议可以让我快速赶上简单验证/字符串转换的速度吗?
发布于 2019-10-21 04:45:49
您可以使用for循环和几个if语句来完成这一任务(很长一段时间)。您肯定希望在Character.isDigit()语句条件下在中使用方法。
您需要一次迭代由用户提供的SSN字符串,因此在这里使用String.charAt()方法也很重要。这里有一种方法,你可以这样做:
Scanner input = new Scanner(System.in);
String inputSSN = "";
while (inputSSN.equals("")) {
System.out.print("Enter a Social Security Number: --> ");
inputSSN = input.nextLine();
// Validate SSN...
for (int i = 0; i < inputSSN.length(); i++) {
// Validate the first set of 3 digits
if (i >= 0 && i <= 2) {
if (!Character.isDigit(inputSSN.charAt(i))) {
inputSSN = "";
break;
}
continue;
}
// Validate the first hyphen
if (i == 3 && inputSSN.charAt(i) != '-') {
inputSSN = "";
break;
}
// Validate the second set of 2 digits
if (i >= 4 && i <= 5) {
if (!Character.isDigit(inputSSN.charAt(i))) {
inputSSN = "";
break;
}
continue;
}
// Validate the second hyphen
if (i == 6 && inputSSN.charAt(i) != '-') {
inputSSN = "";
break;
}
// Validate the third set of 4 digits
if (i >= 7 && i <= 10) {
if (!Character.isDigit(inputSSN.charAt(i))) {
inputSSN = "";
break;
}
}
}
// Validate that the SSN is the right length
if (inputSSN.length() != 11) {
System.out.println("Invalid Social Security Number!" + System.lineSeparator());
inputSSN = "";
}
}
System.out.println(inputSSN + " is a valid Social Security Number.");https://stackoverflow.com/questions/58478092
复制相似问题