题目描述
我想还能这么写,搜索eE.,然后分割字符串,剩下就能按照0-9来判断了
Java 代码
public boolean isNumber(String s) {
for(int i = 0;i < s.length();i++) {
if(s.charAt(i) == 'e' || s.charAt(i) == 'E') {
return isNum(0, i - 1, s) && isOneSignal(i + 1, s.length() - 1, s);
}
}
return isNum(0, s.length() - 1, s);
}
private boolean isNum(int a, int b, String s) {
if(a > b) {
return false;
}
if(s.charAt(a) == '-' || s.charAt(a) == '+') {
a++;
}
if(a > b) {
return false;
}
for(int i = a;i <= b;i++) {
if(s.charAt(i) == '.') {
if(a > i - 1) {
return isOne(i + 1, b, s);
} else if(i + 1 > b) {
return isOne(a, i - 1, s);
} else {
return isOne(a, i - 1, s) && isOne(i + 1, b, s);
}
}
}
return isOne(a, b, s);
}
private boolean isOne(int a, int b, String s) {
if(a > b) {
return false;
}
for(int i = a;i <= b;i++) {
if(s.charAt(i) < '0' || s.charAt(i) > '9') {
return false;
}
}
return true;
}
private boolean isOneSignal(int a, int b, String s) {
if(a > b) {
return false;
}
if(s.charAt(a) == '-' || s.charAt(a) == '+') {
a++;
}
if(a > b) {
return false;
}
for(int i = a;i <= b;i++) {
if(s.charAt(i) < '0' || s.charAt(i) > '9') {
return false;
}
}
return true;
}