表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值,但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
```java /* 1. + - 后面只跟数字0- 9 或 后面为 小数点 . 2. + - 只出现在第一位或者E e 的后一位 3. '.'小数点后面必定为数字或最后一位 4. e E 后面必定为数字或+ - 号 */ public class IsNumericSolution { public boolean isNumeric(char [] str){ if (str.length < 1){ return false; } boolean decimal = false;//记录小数点与否 boolean hasE = false;//记录E、e出现与否 for(int i = 0; i < str.length; i++){ //+ - 后面只跟数字0- 9 或 后面为 小数点 . if (str[i] == '+' || str[i] == '-'){ if( (i + 1) == str.length || !( str[i+1] >= '0' && str[i+1] <= '9' || str[i+1] == '.') ){ return false; } //+ - 只能出现在第一位或者E e 的后一位 if ( !( i == 0 || str[i-1] == 'E' || str[i-1] == 'e')){ return false; } } else if (str[i] == '.'){ //'.'小数点后面必定为数字或最后一位 if(decimal || hasE || !( i+1 < str.length && str[i+1] >= '0' && str[i+1] <= '9') ){ return false; } decimal = true; } else if (str[i] == 'e' || str[i] == 'E'){//e E 后面必定为数字或+ - 号 if(hasE || i+1 == str.length || !(str[i+1] >= '0' && str[i+1] <= '9' || str[i+1] == '+' || str[i+1] == '-')){ return false; } hasE = true; } else if (str[i] >= '0' && str[i] <= '9'){ }else{ return false; } } return true; } }