Java 检查JTextField是否为空时出现NumberFormatException错误

Java 检查JTextField是否为空时出现NumberFormatException错误,java,numberformatexception,Java,Numberformatexception,我在运行时遇到NumberFormatException错误。使用if语句检查JTextField是否为空时会导致此错误 private void btnAddNumberMouseClicked(java.awt.event.MouseEvent evt) { numberArray.add(Integer.parseInt(txtNumber.getText())); if(!(txt

我在运行时遇到
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("");
private void btnAddNumberMouseClicked(java.awt.event.MouseEvent evt){
add(Integer.parseInt(txtNumber.getText());
if(!(txtNumber.getText()等于(“”)){
scoresList.setText(“”);
对于(int i=0;i
可能需要更改此选项:

Integer.toString()
像这样的事情

String.valueOf()
或者,您可以只在textArea中追加整数,而不将其强制转换为字符串


另外,尝试使用.isEmpty()方法而不是.equals()

可能需要更改:

Integer.toString()
像这样的事情

String.valueOf()
或者,您可以只在textArea中追加整数,而不将其强制转换为字符串


另外,请尝试使用.isEmpty()方法而不是.equals()

错误在下面一行:

numberArray.add(Integer.parseInt(txtNumber.getText()));
如果您添加了stacktrace(您收到的错误代码),则回答代码会更容易。它看起来类似于以下内容:

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)
在本例中,stacktrace的关键部分是第一行。它指出是什么输入导致了问题。stacktrace的其余部分确切地指出是什么导致了异常被抛出

如果你用stacktrace更新这个问题,我会完全回答你的问题。现在,让我猜猜有什么帮助

您的问题可能由三种情况引起:

  • 您正在尝试分析一个
    null
  • 您的
    字符串
    是前导字符或后跟您看不到或为空的白色字符
  • 字符串
    根本不可解析
  • 我认为这是第二种选择,因为否则您会从stacktrace中注意到问题

    解决办法可能是:

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

    如果它仍然抛出异常,请给我一个注释,并用stacktrace更新问题。

    错误在下面一行:

    numberArray.add(Integer.parseInt(txtNumber.getText()));
    
    如果您添加了stacktrace(您收到的错误代码),则回答代码会更容易。它看起来类似于以下内容:

    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)
    
    在本例中,stacktrace的关键部分是第一行。它指出是什么输入导致了问题。stacktrace的其余部分确切地指出是什么导致了异常被抛出

    如果你用stacktrace更新这个问题,我会完全回答你的问题。现在,让我猜猜有什么帮助

    您的问题可能由三种情况引起:

  • 您正在尝试分析一个
    null
  • 您的
    字符串
    是前导字符或后跟您看不到或为空的白色字符
  • 字符串
    根本不可解析
  • 我认为这是第二种选择,因为否则您会从stacktrace中注意到问题

    解决办法可能是:

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

    如果它仍然抛出异常,请给我一个注释,并使用stacktrace更新问题。

    第一行解析与您测试的值相同的值,然后使用
    “”
    。想想那里的顺序。我将解析值的那一行放在FOR循环上方的IF语句中,一切都很正常。谢谢@ElliottFrisch:)@MosDef我添加了答案。请添加stacktrace并告诉我我的解决方案是否有效。如果我的答案解决了您的问题,可能会重复@MosDef,请谅解se通过单击问题分数下方的灰色勾号将其标记为解决方案。第一行解析的值与您测试的值相同,然后与
    “”
    。想想那里的顺序。我将解析值的那一行放在FOR循环上方的IF语句中,一切都很正常。谢谢@ElliottFrisch:)@MosDef我添加了答案。请添加stacktrace并告诉我我的解决方案是否有效。如果我的答案解决了您的问题,可能会重复@MosDef,请谅解se单击问题分数下方的灰色勾号,将其标记为解决方案。