android中的numberformatexception和edittext

时间:2012-12-03 15:38:56

标签: android android-edittext numberformatexception

以下代码给出了numberformatexception。你能告诉我在哪些地方放置exepcions或怎么做关于以下的线路? logcat告诉注释行存在问题

public void zaplatiti(){
   EditText zbrojka = (EditText) findViewById(R.id.editText7);
   Float[] strings = new Float[allTexts.size()];
   Float zbroj=(float) 0;
   for(int i=0; i < allTexts.size(); i++){
       strings[i] = Float.valueOf(allTexts.get(i).getText().toString());////problem


   }
   for (int k=0;k<strings.length;k++){
       zbroj =zbroj+ strings[k];}

   }
   zbrojka.setText(String.valueOf(zbroj)+"KN");

}

2 个答案:

答案 0 :(得分:0)

for(int i=0; i < allTexts.size(); i++){
    try {
        strings[i] = Float.valueOf(allTexts.get(i).getText().toString());////problem
    }
    catch (NumberFormatException e) {
        // Code to execute if the entered value is not a number
    }
}

这也可以通过仅允许EditTexts具有数值来避免。这将强制用户仅在第一个位置输入数值,然后您不必捕获异常。但是你应该先检查输入的文本是否为空。

编辑:

为此,您必须生成if语句,但String值之间的正确比较是:

if ( mEditText.getText().toString().equals("String to compare with")){ ... } 

editText的“数字模式”可以在XML文件中设置为:

android:inputType = "number"

其他有效的数值模式为numberSignednumberDecimal

因此,在更改输入类型后,您的代码可能如下所示:

for(int i=0; i < allTexts.size(); i++){
    if (!allTexts.get(i).getText().toString().equals("")) {
        strings[i] = Float.valueOf(allTexts.get(i).getText().toString());////problem
    }
    else {
        // Code to execute if there is no entered value
    }
}

答案 1 :(得分:0)

您是否检查过allTexts数组类型?