Ошибка NumberFormatException при проверке, является ли JTextField пустым

Я получаю ошибку NumberFormatException во время выполнения. Ошибка возникает при проверке того, является ли JTextField пустым с помощью оператора IF.

    private void btnAddNumberMouseClicked(java.awt.event.MouseEvent evt) {                                          
    numberArray.add(Integer.parseInt(txtNumber.getText()));
    if(!(txtNumber.getText().equals(""))){
        scoresList.setText("");
        for (int i = 0; i < numberArray.size(); i++) {
            scoresList.append(Integer.toString(numberArray.get(i)) + "\n");
        }
    }
    txtNumber.setText("");

person Mos Def    schedule 12.09.2016    source источник
comment
Первая строка анализирует то же значение, которое вы затем проверяете на равенство с "". Подумайте о порядке там.   -  person Elliott Frisch    schedule 13.09.2016
comment
Я поместил строку, в которой я проанализировал значение, в оператор IF чуть выше цикла FOR, и все работает отлично. Спасибо @ElliottFrisch :)   -  person Mos Def    schedule 13.09.2016
comment
@MosDef Я добавил ответ. Пожалуйста, добавьте трассировку стека и скажите, работает ли мое решение.   -  person xenteros    schedule 12.10.2016
comment
Возможный дубликат java.lang.NumberFormatException: для входной строки: 23   -  person Pavneet_Singh    schedule 12.10.2016
comment
@MosDef Если мой ответ решил вашу проблему, отметьте его как решение, нажав на серую галочку под оценкой вопроса.   -  person xenteros    schedule 13.10.2016
comment
Возможный дубликат Что такое исключение NullPointerException и как его исправить это?   -  person xenteros    schedule 13.10.2016


Ответы (2)


Возможно, вы захотите изменить это:

Integer.toString()

к чему-то вроде этого

String.valueOf()

Или вы можете просто добавить целое число в textArea, не переводя его в String.

Также попробуйте использовать метод .isEmpty() вместо .equals().

person L. Cabrera    schedule 12.09.2016

Ошибка в следующей строке:

numberArray.add(Integer.parseInt(txtNumber.getText()));

Ответить на ваш код было бы проще, если бы вы добавили трассировку стека, которая является кодом ошибки, который вы получаете. Это выглядит примерно так:

Exception in thread "main" java.lang.NumberFormatException: For input string: "6 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)

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

Если вы обновите вопрос с помощью трассировки стека, я полностью отвечу на ваш вопрос. А теперь дай угадаю, что может помочь.

Ваша проблема может быть вызвана тремя ситуациями:

  1. Вы пытаетесь разобрать null,
  2. Ваш String идет впереди или за ним следуют белые символы, которых вы не видите, или они пусты,
  3. String вообще не поддается разбору.

Я считаю, что это второй вариант, потому что в противном случае вы бы заметили проблему по трассировке стека.

Решение может быть:

numberArray.add(Integer.parseInt(
    (txtNumber.getText().trim().equals("") ?
       "0"
     :
       txtNumber.getText().trim()
));

если он по-прежнему выдает исключение, дайте мне комментарий и обновите вопрос с помощью трассировки стека.

person xenteros    schedule 12.10.2016