2012-12-01 29 views
1

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

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

解析它之前修剪该字符串。然后,所有的NFE都是由于用户(输入)错误。 – Perception

回答

4

因为subtotalTextField.getText()返回的东西是不能分析到int,它应该表现出什么传递给parseInt()

0

所返回什么值异常消息是不是一个字符串吧?不要链接它,检查是否为零,并做

Object val = subtotalTextField.getText(); 
if (val != null) 
    String txt = val.toString(); 
+0

它必须是一个字符串,否则会出现编译时错误(并且'getText'通常意味着字符串)。 'NumberFormatException'通常表明一个字符串不能被解析为一个int(或其他数字类型)。 – arshajii

+0

它是一个字符串,但不是一个整数表示 – AlexWien

+0

不在Android中 - 例如 - 它将返回Spannable – Bostone

0

如上所述,输入到文本字段中的文本不能被解析为整数。这意味着您的文本字段包含字符,即“2s”。

如果你想避免这个错误,每当用户输入一个无效的Integer时,用try-catch子句包围它。输入用于subtotalTextField.getText(),我可以考虑一下

subtotalTextField.getText() = null; // or 

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

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

如果你能确保用户

try{ 
// Try to parse to Integer 

}catch(NumberFormatException e) { 
// Thing to do when a user enters non-valid Integer 
} 
0

可能的值值是由任何验证有效的数字。没有问题从你的逻辑开始。

相关问题