В данной статье мы узнаем, как осуществить проверку на то, является ли заданная строка числом. Мы рассмотрим несколько способов: с использованием внешних библиотек и с помощью стандартного API JavaSE.

Способ 1: проверка, является ли строка числом (Java API)

Здесь мы используем только стандартный API JavaSE. В первом варианте мы пытаемся привести строку к типу Double, и если у нас это получается, мы считаем, что указанная строка – число:

public static boolean isNumeric(String str) {
    try {
        Double.parseDouble(str);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

С помощью этого метода вы можете проверить целые числа, дробные числа, числа с ведущим знаком плюса или минуса.

Способ 2: проверка, является ли строка числом (Apache Commons)

В этом способе мы используем библиотеку Apache Commons. Если у вас Maven проект, укажите следующий артефакт в вашем файле pom.xml:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

С помощью метода NumberUtils.isParsable мы можем проверить, является ли указанная строка числом:

System.out.println(NumberUtils.isParsable("120.99")); // true
System.out.println(NumberUtils.isParsable("+120.99f")); // true
System.out.println(NumberUtils.isParsable("-120.99f")); // true
System.out.println(NumberUtils.isParsable("120.99abc")); // false
System.out.println(NumberUtils.isParsable("0xFF")); // false

Метод isParsable является обёрткой поверх Integer.parseInt, Long.parseLong, Float.parseFloat и Double.parseDouble. Его удобно использовать для того, чтобы самому не писать шаблонный код по перехвату исключений этих методов.

Исходный код

public class IsStringNumber1 {

    public static void main(String[] args) {
        System.out.println(isNumeric("120.99")); // true
        System.out.println(isNumeric("+120.99f")); // true
        System.out.println(isNumeric("-120.99")); // true
        System.out.println(isNumeric("120.99abc")); // false
        System.out.println(isNumeric("0xFF")); // false
    }

    public static boolean isNumeric(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
}
import org.apache.commons.lang3.math.NumberUtils;

public class IsStringNumber2 {

    public static void main(String[] args) {
        System.out.println(NumberUtils.isParsable("120.99")); // true
        System.out.println(NumberUtils.isParsable("+120.99f")); // true
        System.out.println(NumberUtils.isParsable("-120.99f")); // true
        System.out.println(NumberUtils.isParsable("120.99abc")); // false
        System.out.println(NumberUtils.isParsable("0xFF")); // false
    }
}

Заключение

Мы рассмотрели различные способы проверить строку на то, является ли она числом.

Является ли строка числом