首页 > 解决方案 > 为什么这个方法总是返回 false?

问题描述

我想使用提供的方法评估电话号码。电话号码的长度应始终为 10。但是,以下方法似乎总是返回 false。这是为什么?谢谢。

public static boolean valPhoneNumber(String phonenumber){
    boolean result= true; 

    if (phonenumber.length() > 10 || phonenumber.length() < 10){ 
        result= false;            

    }else                           
            phonenumber.length();
            char a=phonenumber.charAt(0); 
            char b=phonenumber.charAt(1);            
            char d=phonenumber.charAt(3);
            char e=phonenumber.charAt(4);
            char f=phonenumber.charAt(5);

            if (a<2 || a>9){ 
               result = false;
            }else if( b<0 || b>8){ 
                result = false;
            }else if (d<2 || d>9){ 
                result = false;
            }else if (e==1 && f==1){ 
                result = false;
            }                  
    return result;
}

标签: java

解决方案


因此,请查看将字符与数字进行比较的阶梯。在这种情况下,将使用 ASCII 值进行比较。

您可以使用单引号来检查范围:

if (a < '2' || a > '9') { 
    result = false;
} else if( b < '0' || b > '8') { 
    result = false;
} else if (d < '2' || d > '9') { 
    result = false;
} else if (e == '1' && f == '1') { 
    result = false;
}

一个班轮:

result = !((a < '2' || a > '9') || (b < '0' || b > '8') || (d < '2' || d > '9') || (e == '1' && f == '1'));

推荐阅读