我在运行时遇到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("");
答案 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)
在这种情况下,堆栈跟踪的关键部分是第一行。它说什么输入导致了问题。堆栈跟踪的其余部分确切地说明了引发异常的原因。
如果您使用堆栈跟踪更新问题,我将完全回答您的问题。现在,让我猜一下可能会有什么帮助。
您的问题可能是由三种情况引起的:
null
,String
领先或后面是您看不到或为空的白色字符,String
根本无法解析。我相信这是第二种选择,因为否则你会注意到堆栈跟踪的问题。
解决方案可能是:
numberArray.add(Integer.parseInt(
(txtNumber.getText().trim().equals("") ?
"0"
:
txtNumber.getText().trim()
));
如果它仍然抛出异常,请给我一个评论并用堆栈跟踪更新问题。