算是递归吧
表示数值的字符串
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; } }