我的程序已完成,这是我唯一无法弄清楚的部分我必须检查用户输入String userPhone
是否为整数
System.out.println("Please enter your phone number (10-dights only)");
String userNumber=sc.nextLine();
while(true) {
if (userNumber.length()==10) {
order01.cust1.setPhoneNumber(userNumber);
break;
}
else if (userNumber.length()!=10) {
System.out.println("Invalid phone number, Enter a valid one");
}
userNumber=sc.nextLine();
}
答案 0 :(得分:0)
您可以使用正则表达式来验证String
是否恰好包含10位数\d{10}
- 并且您不需要else
在break
之后。像,
while(true) {
if (userNumber.matches("\\d{10}")) {
order01.cust1.setPhoneNumber(userNumber);
break;
}
System.out.println("Invalid phone number, Enter a valid one");
userNumber=sc.nextLine();
}
答案 1 :(得分:0)
检查数字匹配。 matches()方法的string采用正则表达式。这里\ d *表示所有字符只能是数字。在此之前我们也在检查长度。
while(true) {
if (userNumber.length()==10 && userNumber.matches("\\d*")) {
System.out.println(userNumber);
break;
}
else if (userNumber.length()!=10 || !userNumber.matches("\\d*")) {
System.out.println("Invalid phone number, Enter a valid one");
}
userNumber=sc.nextLine();
}
答案 2 :(得分:0)
最简单和最原始的是循环输入字符串(因为你的字符串只有10个单位长)并检查每个索引处的字符是否是使用Character.isDigit
的数字
答案 3 :(得分:0)
请参阅此链接获取更多信息和原始信用的链接:Original Code
尝试以下方法:
public static boolean isNumber(String string) {
try {
Long.parseLong(string);
} catch (Exception e) {
return false;
}
return true;
}
你的代码中的:
if (isNumber(userPhone)) {
order01.cust1.setPhoneNumber(userNumber);
break;
}