2016-02-23 3 views
0

Мне нужно проверить, имеет ли текстовое поле (ID) что-либо, кроме численного значения. Я разбираю строку в текстовом поле в int. Я попытался поймать ошибку с помощью блока try-catch, но каждый раз, когда в поле есть что-то другое, кроме int, оно отображает сообщения об ошибках и завершает работу всей программы. Я хочу, чтобы пользователь мог вернуться и отредактировать поле ID.Проверка ошибок Java для текстового поля

try{ 
    int id = Integer.parseInt(fieldID.getText()); 
} 
catch(NumberFormatException e2){ 
    JOptionPane.showMessageDialog(null, "Please enter a valid ID","Alert!", JOptionPane.ERROR_MESSAGE); 
} 
+0

Можете ли вы поделиться еще одним кодом? – shmosel

+0

Рассмотрите возможность использования 'JSpinner' или' JFormattedTextField' или если вы действительно отчаянно нуждаетесь в 'DocumentFilter', это позволит вам ограничить то, что OP может ввести. – MadProgrammer

+0

Пожалуйста, используйте некоторую проверку' regex' для 'fieldID.getText() . и если он содержит только числовые значения, то только для синтаксического анализа. в противном случае это может привести к тому, что 'Exception' –

ответ

1

использование регулярных выражений

String regex = "\\d+"; 

, а затем

System.out.println(myString.matches(regex)); 

Ваш последний фрагмент может выглядеть

fieldID.getText().matches(regex)); 
0

Try ч anging заявление поймать только поймать любое исключение независимо от типа

catch (Exception e2){

Было бы полезно, чтобы увидеть трассировки стека вашей ошибки в.

+0

Когда я меняю его на «Exception», я получаю ту же ошибку: 'java.lang.NumberFormatException: для строки ввода:« a », если я набираю букву« a », в поле ID. –

+0

@ShlokK Неверная ошибка в коде? Если отображается диалоговое окно «Сообщение», тогда исключение IS обрабатывается правильно. Возможно, вы захотите установить «логическое значение недействительно» в true в вашей ловушке исключения, а затем в программе сделать что-то вроде 'if (! Invalid)', чтобы он знал, имеет ли значение 'id' допустимое значение. –

+0

Да, появляется диалоговое окно сообщения, но программа просто сработает. Я реализовал JFormattedTextFields сейчас, но я думаю, что могу использовать это логическое для отображения сообщения после того, как введенный текст недействителен. Благодаря! –

0

Почему бы вам не ограничивать поле ввода только числовым номером! то у вас не будет такой заботы, чтобы попытаться поймать ее. Оформить заказ на этот вопрос: https://stackoverflow.com/a/8017847/2356808

Смежные вопросы