2012-03-17 7 views
4

コードは次のとおりです。NumberFormatExceptionがエラー

editText2=(EditText) findViewById(R.id.editText2); 
editText3=(EditText) findViewById(R.id.editText3); 
float from_value= Float.parseFloat(editText2.getText().toString()); 
editText3.setText(" "+(from_value * 100.0)); 

そしてlogcatエラーがある:

3月18日03:19:07.847:E/AndroidRuntime(875):java.langで:によって引き起こさ.NumberFormatException:無効な浮動小数点: ""

+0

エラーメッセージはクリアです。空の文字列を解析して浮動小数点数に変換しようとしています。あなたはどんな価値がありますか? –

答えて

7

editText2の文字列のように見えるので、floatとして解析できません。

可能な解決策は、文字列が最初に空であるかどうかをチェックして、デフォルト値について決定することです、他のは、例外をキャッチすることです:

float from_value; 
try { 
    from_value = Float.parseFloat(editText2.getText().toString()); 
} 
catch(NumberFormatException ex) { 
    from_value = 0.0; // default ?? 
} 
+0

もう一つの疑問があります。 'editText2'に数字が入力されるとすぐに' editText3'に値を表示したいと思います。どうしたらいいですか?助けてください。 – Exorcist

+0

私の場合、表示値は入力値の100倍です。ユーザーが10を入力したい場合は、最初に1を入力する必要があり、1になるとすぐにEditText3が100と表示されます。次に0が残り、それは数字10を作るために、今EditText3は1000を表示する必要があります。 – Exorcist

+1

自分のクラスでEditTextを拡張し、 'onTextChanged'メソッドをオーバーライドする必要があると思います。 – MByD

0

おそらくあなたから読んでいる値を検証することをお勧めそれを解析して浮動させる前にeditText2を実行します。最初に有効な番号であることを確認してください。

0

IMHOこのエラーの原因となっている浮動小数点値を入力しています。

4

try/catchは、推奨されている方法ではないため可能な限り使用しないでください。

このエラーを回避する正しい方法は、発生前に停止することです。

if (mEditText.getText().toString().equals("")) { 
    value = 0f; 
} else { 
    value = Float.parseFloat(mEditText.getText().toString()); 
} 

更新:あなたはEditTextを使用しているので、NumberFormatExceptionがを回避するための最も簡単な方法は、それが数字だけを受け入れるようにinputType属性を指定することです。 XMLの例:android:inputType="number"。ただし、データ型で保持できない値を大きく(または小さく)でも取得できます。

次に、カスタム「IntEditText」またはInputFilterを使用してレベルを上げて、最小値と最大値を指定してアプリ全体でコードを再利用できるようにすることもできます。私に

1

であるが、このようにそれを行うための最善の方法:

editText2=(EditText) findViewById(R.id.editText2); 
editText3=(EditText) findViewById(R.id.editText3); 

if(!editText2.getText().toString().matches("")){ 
float from_value= Float.parseFloat(editText2.getText().toString()); 
editText3.setText(" "+(from_value * 100.0)); 
} 

もeditText2

android:inputType="numberDecimal" 

のためにあなたのXMLに次の行を追加しますが、それが役に立てば幸い!

関連する問題