Как проверить ввод textField?

1

Я знаю, что это не должно быть слишком сложно, но мои поиски еще не привели к чему-то полезному. Все, что я хочу сделать, это убедиться, что пользователь вводит положительное целое число в textField. Я пробовал:

public class myInputVerifier extends InputVerifier {
    @Override
    public boolean verify(JComponent jc) {
        String text = ((jTextFieldMTU) jc).getText();
        //Validate input here, like check int by try to parse it using Integer.parseInt(text), and return true or false

        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

Поэтому в моем основном коде я хочу использовать это для отображения "ОК" в случае успеха и "Введите положительное число", если это не удастся.

Может кто-нибудь указать мне в правильном направлении, пожалуйста? Благодарю!

  • 0
    Позвольте мне помочь вам разобраться с этим: 1) захватить содержимое текстового поля 2) проанализировать строку, чтобы получить int 3) проверить, является ли int> = 0. Используйте Google Fu и удалите этот вопрос - это не по теме.
  • 2
    @MarsAtomic: Я бы не сказал, что это не по теме, так как это правильный вопрос, но, возможно, он не был сильно исследован до того, как задавать вопрос.
Показать ещё 6 комментариев
Теги:

3 ответа

4

Вы можете использовать блок try-catch, чтобы проверить, является ли вход целым:

try {
    int i = Integer.parseInt(input);
    // input is a valid integer
}
catch (NumberFormatException e) {
    // input is not a valid integer
}
  • 1
    Да 1+. Затем верните true из-под синтаксического анализа (после проверки, что его> 0) и false из блока catch, чтобы метод verify действовал соответствующим образом.
  • 0
    @Yellos Спасибо за ответ, я попробую. Полагаю, в чем я не уверен, так это в том, как реализовать это, поскольку он должен идти в своем собственном методе, а затем этот метод вызывается в другом месте программы. Я возьму это немного, спасибо.
1

Строка имеет метод совпадений, который вы можете использовать с регулярными выражениями, чтобы увидеть, соответствует ли содержимое определенному шаблону. Регулярное выражение для целых положительных чисел равно ^ [1-9]\d * $, поэтому вы можете использовать его вот так...

boolean matches = text.matches("^[1-9]\d*$");

if(matches){
   //Do something if it is valid
}else{
   //Do something if it is not
}
  • 0
    Спасибо за ответ. Можете ли вы сказать мне, что "^ [1-9] \ d * $" делает или, по крайней мере, называется, чтобы я мог исследовать это. Я видел это несколько раз в своем исследовании, но я не нашел никакой полезной документации (вероятно, потому что я не знаю, как это называется, чтобы погуглить).
  • 1
    Вот хорошая ссылка на символы регулярных выражений в Java. Он в основном гласит: «Сопоставьте любую строку, которая начинается с цифры от 1 до 9, за которой следует любое количество действительных цифр и заканчивается цифрой». Регулярные выражения - это способ представления шаблона поиска в виде строки. Если вы не знакомы с ними, на YouTube есть несколько отличных видеоуроков, которые объясняют их в целом.
Показать ещё 1 комментарий
0

Я предлагаю вам использовать try catch. Поймать исключение NumberFormatException. Таким образом вы проверяете, может ли текст анализироваться на целое число. Если нет, вы можете отобразить сообщение об ошибке пользователю. После этого вы можете использовать оператор if else, чтобы проверить, является ли число положительным, если не положительным, вы можете дать пользователю сообщение об ошибке. Я предлагаю вам исследовать попытку поймать, если вы этого не знаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню