第一种:
对字符串每一个字符都进行校验,排除不符合条件的。应符合如下规则:
**
/
1、e(E)后面只能接数字,并且不能出现2次
2、对于+、-号,只能出现在第一个字符或者是e的后一位
3、小数点不能放在开头或末尾,不能出现2次,e后面不能出现小数点
**/
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ public boolean isNumeric (String str) { // write code here //用一个字符数组保存str char [] str1=str.toCharArray(); // 标记符号、小数点、e是否出现过 boolean sign = false, decimal = false, hasE = false; for(int i=0;i<str1.length;i++){ if(str1[i]=='e'||str1[i]=='E'){ if(i==str1.length-1) return false; if(hasE) return false;//如果存在E(e)就返回false hasE=true; } else if(str1[i]=='+'||str1[i]=='-'){ if(sign&&str1[i-1]!='e'&&str1[i-1]!='E') return false; if(!sign && i > 0 && str1[i - 1] != 'e' && str1[i - 1] != 'E') return false; sign=true; } else if(str1[i]=='.'){ if (hasE || decimal) return false; decimal = true; } else if (str1[i] < '0' || str1[i] > '9') return false; } return true; } }
**
使用系统自身校验机制
**
try{ double number=Double.parseDouble(new String(str)); } catch(NumberFormatException e){ return false; } return true;