【发布时间】:2020-10-26 19:06:34
【问题描述】:
显示死代码的索引增量为什么会这样?在添加特殊字符条件之前它工作正常,没有显示死代码,我也想验证特殊字符条件。
public class ValidatePhoneNumber {
void validatePhoneNumber(String pNumber) {
// 1st Case - +91 9765463742 have to check for + sign
boolean flag = false;
String specialCharacter = "!@#$%^&*()-/`~:<>/?|=.,";
if (pNumber.startsWith("+") && pNumber.length() == 14) {
for (int index = 1; index < pNumber.length(); index++) {
if ((Character.isDigit((pNumber.charAt(index))) || Character.isSpaceChar((pNumber.charAt(index))))
&& (!(specialCharacter.contains(Character.toString(pNumber.charAt(index)))))
&& (!(Character.isLetter(pNumber.charAt(index))))) {
flag = true;
}
else
System.out.println(pNumber.charAt(index) + " " + pNumber + " Number is Invalid");
flag = false;
break;
}
if (flag == true) {
System.out.println("Number " + pNumber + " is Valid");
}
}
public static void main(String[] args) {
ValidatePhoneNumber phoneNumber = new ValidatePhoneNumber();
phoneNumber.validatePhoneNumber("+91 975644@742");
phoneNumber.validatePhoneNumber("09765463742");
【问题讨论】:
-
因为你
break在第一次迭代之后立即,所以index++永远无法到达。 -
@QBrute 如果我删除
break首先显示无效,但在下一次迭代标志变为真并且显示数字有效。 -
那么您只是错过了
else周围的花括号。我认为休息属于那个 -
@QBrute 感谢您的快速响应,现在已解决
-
为什么不检查每个字符是数字还是空格?额外的检查(特殊字符或字母)似乎是多余的。
标签: java loops validation if-statement