第一种:
对字符串每一个字符都进行校验,排除不符合条件的。应符合如下规则:
**
/

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;