Java-метод, который проверяет это число - PullRequest
0 голосов
/ 24 июня 2018

Я написал метод, который принимает строку и возвращает 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 голосов
/ 24 июня 2018

Используйте Apache Commons StringUtils.isNumeric (), чтобы проверить, является ли String действительным числом

Примеры: -

StringUtils.isNumeric ("123") = true StringUtils.isNumeric (null) =false StringUtils.isNumeric ("") = false StringUtils.isNumeric ("") = false

0 голосов
/ 24 июня 2018

Это самое легкое решение для удобства чтения кода:

public boolean isDigit(String str) {
     try {
          Integer.parseInt(str)
          return true;
     } catch (NumberFormatException: e) { return false }
}
0 голосов
/ 24 июня 2018

Вы также делаете это с помощью регулярного выражения.

 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;
  }
0 голосов
/ 24 июня 2018

Вы можете просто сделать это:

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

если "." является разделителем для десятичных дробей

0 голосов
/ 24 июня 2018

Вам не нужно проверять, является ли оно int, так как число int также может быть проанализировано до double. Это можно упростить до этого:

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

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

    return b;
}
...