English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой программе вы узнаете о различных методах проверки того, является ли строка числом в Java.
public class Numeric { public static void main(String[] args) { String string = "12345.15"; boolean numeric = true; try { Double num = Double.parseDouble(string); } catch (NumberFormatException e) { numeric = false; } if(numeric) System.out.println(string + " \t это число"); else System.out.println(string + " \t не число"); } }
При выполнении программы вывод будет следующим:
12345.15 - это число
В上面的 программе у нас есть строка string (String), которая содержит строку для проверки. У нас также есть булево значение numeric, которое хранит конечный результат, является ли это числом.
Чтобы проверить, содержит ли строка только цифры, в блоке try мы используем метод parseDouble() класса Double для преобразования строки в Double
Если выбрасывается ошибка (например, NumberFormatException), это означает, что string не является числом, и numeric устанавливается в false. В противном случае, это число.
Но если нужно проверить несколько строк, их нужно изменить на функцию. И логика основана на выбрасывании исключений, что может быть очень дорого.
Напротив, мы можем использовать функции регулярного выражения для проверки, является ли строка числом, как показано ниже.
public class Numeric { public static void main(String[] args) { String string = "-1234.15"; boolean numeric = true; numeric = string.matches("-?\\d+(\\.\\d+)?"); if(numeric) System.out.println(string + " \t это число"); else System.out.println(string + " \t не число"); } }
При выполнении программы вывод будет следующим:
-1234.15 - это число
В上面的 программе мы используем regex для проверки, является ли string числом, вместо использования блока try-catch. Это выполняется с помощью метода matches() String.
В методе matches()
-?\t Разрешить ноль или несколько - для отрицательных чисел в строке.
\\d+ Проверить, содержит ли строка хотя бы один или несколько чисел (\\d).
(\\.$\\d+)? Разрешить ноль или несколько заданных шаблонов (\\.$\\d+), где
\\.$ проверить, содержит ли строка \\.$ (точка)
Если да, то по крайней мере один или несколько чисел \\d+.