有人可以解释为什么这是结果吗?

时间:2015-06-23 03:15:05

标签: java debugging

public boolean isNumber(String s) {
    String a = s.trim();
    if(a == null || a.isEmpty()){
        return false;
    }
    boolean dFlag = false;
    boolean eFlag = false;
    boolean nFlag = false;

    for (int i = 0; i< a.length();i++){
        char c = a.charAt(i);
        if (c == '+' || c == '-'){
            if (i == 0 || a.charAt(i-1) == 'E' || a.charAt(i-1) == 'e' && i != a.length()-1 && a.charAt(i+1) >= '0' && a.charAt(i+1)<= '0') continue;
            else return false;
        } else if ( c == '.'){
            if ( eFlag || dFlag || (!nFlag && i == a.length()-1) ) return false;
            else dFlag = true;
        } else if (c == 'E' || c == 'e'){
            if (!nFlag|| eFlag || i == a.length()-1) return false;
            else eFlag = true;
        } else if (c >= '0' || c <= '9'){
            nFlag = true;
        } else {
            return false;
        }
    }
    return true;
}

为什么输入s =&#34;。 1&#34;,结果是真的吗?第二个字符是空格,因此它会进入最后一个字符并返回false。我无法理解。

1 个答案:

答案 0 :(得分:3)

因为

} else if (c >= '0' || c <= '9'){

你可能希望它是

} else if (c >= '0' && c <= '9'){