表示数值的字符串
/*
从字符串第一个字符开始判断
首先判断第一个字符是否是‘+’ or ‘-’
接下来判断 是否为数字
接着判断是否为.这当中有一种情况例如 12e1.3 e后面小数点 所以要求当hasE==true时直接return
接下来判断是否为e E 因为e E后面可以接‘+’ ‘-’ 和 数字
其它情况 如 1a6这种 就直接return false了
如果最后一个字符是e E的话 如12e 直接return false
当i的值递增到字符串长度时 return true 否则return false
条理清晰 简单
*/
public class Solution {
public boolean isNumeric(char[] str) {
boolean sign=false;
boolean hasE = false;
boolean decimal = false;
int decimalCount = 0;
int i=0;
for(;i<str.length;i++){
if((str[0] == '+'||str[0] == '-')&& !sign){
sign = true;
}else if(str[i] >= '0' && str[i] <= '9'){
continue;
}else if(str[i]=='.' && decimal==false){
decimal = true;
if(hasE){
return false;
}
}else if((str[i] == 'e'||str[i] == 'E')&& !hasE){
hasE = true;
}else if((str[i-1] == 'e'||str[i-1] == 'E')&&((str[i] >= '0' && str[i] <= '9')||(str[i] == '+'||str[i] == '-'))){
hasE = true;
continue;
}else{
return false;
}
}
if((str[str.length-1]=='e' || str[str.length-1]=='E' )) {
return false;
}
if(i==str.length ){
return true;
}else{
return false;
}
}
}