0

次のコードでは、numberformatexception が発生します。Execions をどこに置くか、または次の行をどうするか教えてください。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

allTexts配列型を確認しましたか?

于 2012-12-03T15:43:09.183 に答える
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
    }
}

これは、EditText に数値のみを許可することで回避することもできます。これにより、ユーザーは最初に数値のみを入力するように強制され、例外をキャッチする必要がなくなります。ただし、最初に入力したテキストが空かどうかを確認する必要があります。

編集:

これを行うにはifステートメントを作成する必要がありますが、文字列値間の正しい比較は次のとおりです。

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
    }
}
于 2012-12-03T15:40:11.967 に答える