Проверка строки содержащей число

325
17 ноября 2017, 06:31

Имеется 3 textField, в которые нужно вводить только целые или дробные числа. По нажатию кнопки произвожу вычисления с числами, вытянутыми из textField'ов, попутно помещаю все 3 числа в 1 строку. Как правильно проверить, содержит ли эта строка только целые или дробные числа?

Answer 1
try { 
    Double.valueOf(inputText);
    //это число
} catch(NumberFormatException e){
    //это явно не число
}

Не заморачивайтесь, заталкивайте полученный текст в дабл и перехватывайте возможную ошибку. Вся проблема в том, что регулярка не очень быстрая. К тому же , если регулярка скажет, что это число, то вам его все равно парсить. Так может парсить сразу, регулярка просто лишнее колесо в данном случае .

Answer 2

Если очень хочется проверять регулярками, то можно использовать следующий код:

private static boolean isNumber(String str) {
    return str.matches("[-+]?[\\d]+([.][\\d]+)?");
}

Вывод будет следующий:

System.out.println(isNumber("0"));
System.out.println(isNumber("0.0"));
System.out.println(isNumber("+1.111"));
System.out.println(isNumber("-1"));
System.out.println(isNumber("-2.0"));
System.out.println(isNumber("hello world"));
System.out.println(isNumber("99 hello world"));

true
true
true
true
true
false
false

READ ALSO
Таймер JAVA android

Таймер JAVA android

Вопрос такой: Нужно сделать так, чтобы int раз в 5 секунд меняла своё значение(В начале 0, через 5 секунд - 1, 1 на одну секунду, потом опять 0 и так...

290
Поддержка Java в VS Code

Поддержка Java в VS Code

Здравствуйте! В общем пытаюсь настроить VS Code для компиляции java-файловУстановил расширения:

351
java.net.SocketException: Broken pipe (Write failed)

java.net.SocketException: Broken pipe (Write failed)

У меня есть приложение Java (Server + Client), случайным образом я получаю в логе сервера такую ошибку при загрузке файлов клиентом:

343
Форматированный вывод в файл и консоль

Форматированный вывод в файл и консоль

Суть вопроса: По идее нужно создать модуль, который будет в консоль и в файл записывать потоки вывода в форме <номер строки>: <содержание...

277