检查JTextField是否为空时发生NumberFormatException错误

时间:2016-09-12 22:59:29

标签: java numberformatexception

我在运行时遇到NumberFormatException错误。使用IF语句检查JTextField是否为空时会导致错误。

    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("");

2 个答案:

答案 0 :(得分:0)

可能想要改变这个:

Integer.toString()

这样的事情

String.valueOf()

或者您可以在textArea中附加整数而不将其强制转换为String。

还尝试使用.isEmpty()方法而不是.equals()

答案 1 :(得分:0)

错误如下:

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根本无法解析。
  4. 我相信这是第二种选择,因为否则你会注意到堆栈跟踪的问题。

    解决方案可能是:

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

    如果它仍然抛出异常,请给我一个评论并用堆栈跟踪更新问题。