public boolean isNumeric(char[] str) { if(str.length == 0) return false; int index = 0; int ecount = 0; //e 的数量 int pcount = 0; //符号的数量 if(str[index] == '+' || str[index] == '-') index++; for(int i = index; i < str.length; i++){ if(str[i] == '-' || str[i] == '+'){ // +-号只能放在数字最前面,或者eE的后面,最前面已经在前面先做了判断 if(str[i-1] != 'e' && str[i-1] != 'E') return false; continue; } if(str[i] == 'e' || str[i] == 'E'){ ecount++; if(ecount > 1) //e已经出现过了,不能再出现了 return false; // e不能放在第一位,e的前面必须是数组,e不能放在最后以为 if(i == 0 || str[i-1] < 48 || str[i-1] > 57 || i == str.length-1) return false; pcount++; //为什么要加呢?因为e的后面就不能加小数点了 continue; } if(str[i] == '.'){ pcount++; if(pcount > 1) //出现过小数点了,不能再出现了 return false; continue; } //如果出现其他符号直接返回false if((str[i] < 48 || str[i] > 57) && (str[i] != 'e') && (str[i] != 'E') && (str[i] != '.') ) return false; } return true; }