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。我无法理解。
答案 0 :(得分:3)
因为
} else if (c >= '0' || c <= '9'){
你可能希望它是
} else if (c >= '0' && c <= '9'){