EditText中的NumberFormatException

时间:2013-06-14 12:50:26

标签: android string textwatcher numberformatexception

我有一个TextView,可以计算两个EditText。只要一个数字在EditText中,它就可以工作,但是一旦删除所有数字,我就会收到此错误

java.lang.NumberFormatException:无法解析''为整数

我理解为什么我收到错误但我无法弄清楚如何解决它。我在谷歌搜索并搜索了这个网站的答案,但它们似乎不适用于我的情况。我试图捕获NumberFormatException,但我不能这样做。有什么帮助吗?

items = (EditText)findViewById(R.id.items);
itemcost = (EditText)findViewById(R.id.itemcost);
inventoryvalue = (TextView)findViewById(R.id.inventoryvalue);


TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
calculateResult();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
};

items.addTextChangedListener(textWatcher);
itemcost.addTextChangedListener(textWatcher);
}

private void calculateResult() throws NumberFormatException {

String s1 = items.getText().toString();
    String s2 = itemcost.getText().toString();
    int value1 = Integer.parseInt(s1);
    int value2 = Integer.parseInt(s2);
    int result = value1 * value2; {

// Calculates the result
result = value1 * value2;
// Displays the calculated result
inventoryvalue.setText(String.valueOf(result));             
}

4 个答案:

答案 0 :(得分:5)

检查您的String是否仅包含数字:

s1 = s1.trim();
if (s1.matches("[0-9]+") {
 value1 = Integer.parseInt(s1);
}

答案 1 :(得分:0)

calculateResult方法中的

将所有内容放在if块中:

if(items.getText().tostreing().length>0 && itemcost.getText().toString().length>0){
//your current method definition
}

答案 2 :(得分:0)

afterTextChanged方法更改为:

public void afterTextChanged(Editable s) {
  if (s.length > 0)
      calculateResult();
}

答案 3 :(得分:0)

在calculateResult()中你做Integer.parseInt(s1);不检查String s1或s2是否为空?

因此,您无法将空字符串转换为Int。尝试检查s1或s2是否为空,然后再尝试将它们转换为整数并用它们进行计算......

您可以使用:.equals(String s)来检查字符串是否与其他字符串相等。