为什么此方法总是返回false?

时间:2019-10-18 06:54:08

标签: java

我想使用提供的方法评估电话号码。电话号码的长度应始终为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;
}

6 个答案:

答案 0 :(得分:8)

因此,查看正在比较字符和数字的梯子。在这种情况下,将使用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'));

答案 1 :(得分:1)

我认为您的代码在解析phonenumber.charAt()时出错。这总是返回char,当您与整数进行比较时,它将转换为该char码(ASCII码)显示的数字。我认为您应该将代码修改为int a=Character.getNumericValue(phonenumber.charAt(0));,依此类推

答案 2 :(得分:1)

我认为使用正则表达式的方法将是最干净,最简单的解决方案。

public static boolean valPhoneNumber(String phonenumber){
    String regex = "[2-9][0-8][0-9][2-9][02-9][0-29][0-9]{4}";
    return phonenumber.matches(regex);
}

答案 3 :(得分:0)

您应该将char变量转换为整数。

答案 4 :(得分:0)

您可以尝试以下操作:

  

int a = Integer.parseInt(phonenumber.substring(0,1));

答案 5 :(得分:0)

我添加了单引号以检查范围。谢谢大家。

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

    if (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') { 

        } 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;
}