字符串-JZ-表示数值的字符串*

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。

直接抄的。。。记不住规则

public class Solution {
     
    public boolean isNumeric(char[] str) {
     


        if(str == null)  return false;
        
        boolean sign = false, deciminal = false, hasE = false;  //'+''-'符号、小数点和指数符号出现标志
        for(int i = 0; i < str.length; i++)
        {
     
            if(str[i] == 'e' || str[i] == 'E')
            {
     
                if(i == 0)  return false;  //指数符号前必须有整数
                if(i == str.length - 1)  return false;  //指数符号后必须有整数
                if(hasE)  return false;  //只能有一个指数符号
                hasE = true;
            }
            else if(str[i] == '.')
            {
     
                if(hasE)  return false;  //小数点只能出现在指数符号之前
                if(i == str.length - 1)  return false;  //小数点不能出现在最后一位上
                if(deciminal)  return false;  //小数点只能出现一次
                deciminal = true;
            }
            else if(str[i] == '+' || str[i] == '-')
            {
     
                //第一次出现+''-'符号只能在第一个字符或者指数符号后
                if(!sign && i != 0 && !hasE)  return false;  
                if(sign && !hasE)  return false;  //第二出现'+''-'符号只能在指数符号后
                if(i == str.length - 1)  return false;  //'+''-'符号不能出现在最后一位上
                sign = true;
            }
            else if(str[i] < '0' || str[i] > '9')  return false;  //其它的非数字字符
        }
        return true;
    }
    
}

你可能感兴趣的:(字符串-JZ-表示数值的字符串*)