1

所以这就是我的代码(当然,还没有完成,因为我不想做任何其他工作,直到我弄清楚为什么会出现错误)。它编译没有问题,但是当我尝试运行它时java.lang.NumberFormatException,我的第一行得到了一个,不确定为什么?

 if (Integer.parseInt(subtotalTextField.getText()) <= 200)
 {
    discountTextField.setText("2");
 }
    else
 {
 }
4

4 回答 4

4

因为subtotalTextField.getText()返回无法解析的东西,所以int在异常消息中它应该显示传递给的值是什么parseInt()

于 2012-12-01T02:12:44.773 回答
0

我可以考虑的 subtotalTextField.getText() 的可能值

 subtotalTextField.getText() = null; // or

 subtotalTextField.getText() = "";  // or

 subtotalTextField.getText() = "Any non passable String"; // a ,b c .. 1a ,2a ... etc

如果您可以通过任何验证确保用户输入的值是有效数字。从你的逻辑开始没问题。

于 2012-12-01T02:58:12.067 回答
0

返回的可能不是字符串?不要链接它,检查 null 并执行

Object val = subtotalTextField.getText();
if (val != null)
    String txt = val.toString();
于 2012-12-01T02:13:22.763 回答
0

如前所述,在文本字段中输入的文本无法解析为整数。这意味着您的文本字段包含字符,即 "2s" 。

如果您想在每次用户输入无效整数时避免此错误,请在其周围加上 try-catch 子句。

try{
// Try to parse to Integer

}catch(NumberFormatException e) {
// Thing to do when a user enters non-valid Integer
}
于 2012-12-01T02:17:47.763 回答