0

以下代码给了我 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");

}

4

2 回答 2

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声明,但字符串值之间的正确比较是:

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

an 的“数值模式”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
    }
}
于 2012-12-03T15:40:11.967 回答
0

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

于 2012-12-03T15:43:09.183 回答