我一直在为这部分代码获取StringIndexOutOfBoundsException。 可能是什么原因?联系人声明为String
do{
System.out.print("Contact Number (01X-XXXXXXX) :");
contact = scan.next();
if(!phNumValidation(contact)){
System.out.println("Invalid Phone Number. Please try again.");
System.out.println("");
}
}while(!phNumValidation(contact) || contact.length() < 11);
这是电话号码验证的方法
public static boolean phNumValidation(String contact){
boolean valid = true;
String dash = contact.substring(3, 4);
if(contact.length() == 11){
valid = true;
valid = contact.startsWith("01");
valid = dash.matches("-");
}
else{
valid = false;
}
return valid;
}
答案 0 :(得分:0)
在或左侧(关于while语句)移动contact.length&lt; 11验证。
否则,即使联系人少于11个,您也会进入phNumValidation。而且那种方法还没有为此做好准备。
答案 1 :(得分:0)
您得到异常是因为您倾向于将contact
的{{1}}传递给length <=4
函数并执行子字符串而不先检查长度。下面的代码不会抛出任何异常,因为首先要检查长度。虽然循环也不需要再次调用该函数。
phNumValidation
答案 2 :(得分:0)
现在是时候使用正则表达式了,例如我的validation
方法就是这样。
public static boolean phNumValidation(String contact){
return contact.matches("01\\d-\\d{7}");
}
此方法验证长度,一次格式化。