Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, что строка — число

Короткий ответ

Самый надёжный способ — попробовать разобрать строку и перехватить NumberFormatException:

boolean isInteger(String text) {
    try {
        Integer.parseInt(text);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}
 
void main() {
    IO.println(isInteger("123"));
    IO.println(isInteger("-7"));
    IO.println(isInteger("12a"));
}

Результат:

true
true
false

Только цифры

Если нужны только цифры без знака (например, код из СМС), подойдёт регулярное выражение:

void main() {
    IO.println("004512".matches("\\d+"));
    IO.println("45.12".matches("\\d+"));
}

Результат:

true
false

Дробные числа

Для дробных чисел используйте Double.parseDouble() или выражение с необязательной дробной частью:

void main() {
    String pattern = "-?\\d+(\\.\\d+)?";
 
    IO.println("3.14".matches(pattern));
    IO.println("-10".matches(pattern));
    IO.println("3.".matches(pattern));
}

Результат:

true
true
false

Без исключений и регулярок

Проверка через поток символов работает быстро и понятна с первого взгляда:

void main() {
    String text = "2026";
    boolean digits = !text.isEmpty() && text.chars().allMatch(Character::isDigit);
 
    IO.println(digits);
}

Результат:

true

Частая ошибка

Строка из одних цифр может не поместиться в int. Регулярное выражение её пропустит, а parseInt() упадёт:

void main() {
    String text = "99999999999";
    IO.println(text.matches("\\d+"));
    IO.println(Integer.parseInt(text));
}

Результат:

true
Exception in thread "main" java.lang.NumberFormatException: For input string: "99999999999"

Для больших значений используйте Long.parseLong() или new BigInteger(text).

Функции из этого ответа

  • Integer.parseInt() — Превращает строку с целым числом в int.
  • String.matches() — Проверяет, соответствует ли вся строка регулярному выражению.
  • Character.isDigit() — Проверяет, является ли символ цифрой. Рядом — isLetter(), isWhitespace(), isUpperCase().
  • String.chars() — Возвращает поток кодов символов строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.