算是递归吧
表示数值的字符串
http://www.nowcoder.com/questionTerminal/6f8c901d091949a5837e24bb82a731f2
public boolean isNumeric(char[] str) {
if (str.length==0)
return false;
//判断第一位是否是符号位,isE表示之前E或e出现过没,isPoint表示之前小数点出现过没
if (str[0]=='-'||str[0]=='+')
return helper(str,1,false,false);
else
return helper(str,0,false,false);
}
public boolean helper(char str[],int i,boolean isE,boolean isPoint){
if (i>str.length)
return false;
else if (i==str.length)
return true;
if (str[i]<='9'&&str[i]>='0'){
return helper(str,i+1,isE,isPoint);
} else if(str[i]=='.'||str[i]=='e'||str[i]=='E'){
if (str[i]=='e'||str[i]=='E'){
isE=true;
}
if (str[i]=='.' && isE)
return false; //小数点出现过了,又遇到e或E肯定错 124e+1.2算错
if (str[i]=='.'){
if (isPoint)//小数点出现过了,又遇到小数点肯定错
return false;
isPoint=true;
return helper(str,i+1,isE,isPoint);
} else{
if (i+1>=str.length){
return false;
}else {
if (str[i+1]=='+'||str[i+1]=='-'){
return helper(str,i+2,isE,isPoint);
}else {
return helper(str,i+1,isE,isPoint);
}
}
}
} else {
return false;
}
}
查看2道真题和解析