2012-12-01 23 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

可能的值值是由任何驗證有效的數字。沒有問題從你的邏輯開始。

相關問題