[英]How would I determine whether a number entered by a user contains the proper amount of numbers and - marks
我是Java编程的新手,我们目前正在学习有关字符串和字符的知识。 我的实验室任务是让用户输入他们的SSN,并由程序确定它是否为有效条目。 输入的格式必须为123-45-6789。 到目前为止,这是我所做的:打包实验室;
import java.util.Scanner;
public class Lab4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a valid SSN");
String ssn = input.nextLine();
System.out.print(ssn);
if (ssn.length() == 11) {
if
}
}
}
我一直在这里的论坛上寻找并找到一些不同的答案,但是在我的代码中尝试它们时,出现了问题。 我不希望有人为我写出来。 我将使用哪种类型的方法来检查字符0-2、4-5、7-10是否包含数字,以及3和6处的字符是否包含-。 显然, charAt
和contains
会有所帮助,但是我不确定如何写出确定该条件的条件。
这个问题问到如何辨别SSN是否采用正确的格式 ,似乎是完全相同的作业,我假设我们使用的是同一本书,尽管它被标记为重复,但实际上并没有给出答案,我可以找不到原始问题。 我们也还没有学习数组,所以我正在寻找一个更简单的答案,尽管我敢肯定,使用数组的示例除了简单的答案之外不会受到伤害,因此我可以提高自己的技能。
编辑更新:尽管我敢肯定有更好的方法可以做到这一点,但它确实有效。
公共静态void main(String [] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter a valid SSN");
String ssn = input.nextLine();
if (ssn.length() == 11 &&
ssn.charAt(0)>='0' && ssn.charAt(0)<='9' &&
ssn.charAt(1)>='0' && ssn.charAt(1)<='9' &&
ssn.charAt(2)>='0' && ssn.charAt(2)<='9' &&
ssn.charAt(4)>='0' && ssn.charAt(4)<='9' &&
ssn.charAt(5)>='0' && ssn.charAt(5)<='9' &&
ssn.charAt(7)>='0' && ssn.charAt(7)<='9' &&
ssn.charAt(8)>='0' && ssn.charAt(8)<='9' &&
ssn.charAt(9)>='0' && ssn.charAt(9)<='9' &&
ssn.charAt(10)>='0' && ssn.charAt(10)<='9' &&
ssn.charAt(3)=='-' && ssn.charAt(6)=='-')
{
System.out.println(ssn + " is a valid social security number");
}
else
System.out.print(ssn + " is not a valid social security number");
input.close();
}
}
首先,我将避免嵌套ifs:
if (foo==bar) {
if(that!=other) {
if(...)
}
}
这会很快导致混乱。 尝试使if语句并行,而不是嵌套。 像那样:
if (ssn.length() != 11) {
System.out.print("SSN must be 11 letters long");
return;
}
if (ssn.charAt(3)!='-' || ssn.charAt(7)!='-') {
System.out.print("SSN must be 11 letters long");
return;
}
其次,您需要检查char是否为数字。 您可以通过简单的数字比较来做到这一点:
if (ssl.charAt(0)<'0' || ssl.charAt(0)>'9') {
System.out.print("Char at 0 was not a digit");
return;
}
最好以一种单独的方法提取重复部分(例如上面提到的is-digit检查)。 这样,您就可以避免重复自己,并且可以更好地控制程序。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.