我的程序目前仅在连续十个数字和字符时验证电话号码,并在键入“退出”字样时关闭。但是,我想知道如果他们也被写成两者,我如何验证数字,例如,(123)456-7890和123-456-7890
import java.util.Scanner;
public class Q2
{
public static void main(String[] args){
Scanner kb=new Scanner(System.in);
while (true){
System.out.print("Enter your phone number: ");
String number=kb.next();
if(number.equals("exit")){
System.exit(0);
}
boolean valid=true;
for(int i=0;i<number.length();i++){
if(number.length()!=10) valid=false;
}
if (valid) System.out.println("It is valid");
else System.out.println("It is invalid");
}
}
}
答案 0 :(得分:0)
您可以通过真实验证来实现这一目标。
含义:“验证”描述了根据规则集检查输入的过程。如果输入符合所有那些规则,则它是有效的;否则就不是。
所以,是的,检查长度是第一个简单的规则;但“长度是10”......结果证明这不是一个好规则。例如,“123456A90”的长度为10;但是无效。
你能做些什么(只是给你一些想法):
简单地用“”替换所有“不需要的”字符,例如() - ;然后检查结果字符串的长度是否为10。
因此,答案是:仔细查看您的输入并确定有效电话号码的共同属性。然后你开始编写代码来检查那些。
答案 1 :(得分:0)
为什么你根本不使用这样的正则表达式更强大:
public static void main(String[] args) {
System.out.println("123-456-7890 is valid? " + valider("123-456-7890"));
System.out.println("(123)456-7890 is valid? " + valider("(123)456-7890"));
}
private static boolean valider(String phoneNumber) {
if (phoneNumber.matches("\\d{3}[-\\.\\s]\\d{3}[-\\.\\s]\\d{4}")) {
return true;
} else return phoneNumber.matches("\\(\\d{3}\\)\\d{3}-\\d{4}");
}