Java检查哪个数字

时间:2018-06-24 16:35:20

标签: java numbers int double

我编写了一个方法,该方法接受一个字符串,如果它是一个有效的单个整数或浮点数,则返回true;否则,返回false。

我的代码:

public static boolean isDigit(String s)
    {
        boolean b;
        try
        {
            Integer.parseInt(s);
            b = true;
        }
        catch (NumberFormatException e)
        {
            b = false;
        }

        try
        {
            Double.parseDouble(s);
            b = true;
        }
        catch (NumberFormatException e)
        {
            b = false;
        }

        return b;
    }

我确信有更好的书写方式。谢谢

5 个答案:

答案 0 :(得分:2)

您不需要检查它是否为int,因为int的数字也可以解析为double。可以简化为:

public static boolean isDigit(String s)
{
    boolean b;

    try
    {
        Double.parseDouble(s);
        b = true;
    }
    catch (NumberFormatException e)
    {
        b = false;
    }

    return b;
}

答案 1 :(得分:0)

您也可以使用正则表达式执行此操作。

 public static boolean isDigit(String s){
    String regex = "[0-9]*\\.?[0-9]*";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    boolean b = m.matches();
    return b;
  }

答案 2 :(得分:0)

您可以简单地执行以下操作:

 return s.matches("[+-]?\\d+(\\.\\d+)?");

如果为“。”是小数点的分隔符

答案 3 :(得分:0)

最轻巧的解决方案就是这个,同样也是为了提高代码的可读性:

public boolean isDigit(String str) {
     try {
          Integer.parseInt(str)
          return true;
     } catch (NumberFormatException: e) { return false }
}

答案 4 :(得分:0)

使用Apache Commons StringUtils.isNumeric()检查String是否为有效数字

示例:-

StringUtils.isNumeric(“ 123”)= true StringUtils.isNumeric(null)=假StringUtils.isNumeric(“”)=假StringUtils.isNumeric(“”)=假