以下代码给出了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");
}
答案 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"
其他有效的数值模式为numberSigned
和numberDecimal
。
因此,在更改输入类型后,您的代码可能如下所示:
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数组类型?