2016-05-03 4 views
0

EditText "set_temp"から温度を上げたいとします。 Currtempがあるグローバル文字列は、私はlogcat新しい10進表記の後に無効なfloat

FATAL EXCEPTION: main 
Process: ru.unn.caminlab, PID: 7835 
java.lang.NumberFormatException: Invalid float: "49,9" 

//しかし、なぜに誤りがあり、現在の温度。この後

float temp = Float.parseFloat(set_temp.getText().toString()); 
temp-=0.1; 
currTemp=new DecimalFormat("#0.0").format(temp); 
set_temp.setText(currTemp); 

意味しますか?

+1

'、'カンマの代わりに '.'フルストップかもしれない – Doomsknight

+1

悲しいアイロニーは答えが彼の質問の上にちょうど1行であるということです:( – svarog

+0

@svarog私はコンマを生成するものがないので、ログを読み込むのは便利なスキルです。http://stackoverflow.com/questions/6065258/how-to-interpret-logcat – Doomsknight

答えて

2

無効な10進表記を含むテキストフィールドを解析しているようです。

float temp = Float.parseFloat(set_temp.getText().toString()); 

それは、私は、彼らがフィールドに入力できると仮定し"49.9"

あるべきときにset_tempフィールドが"49,9"が含まれています。番号のフィールドに限定する必要があります。プレーンテキストではありません。 (取り除くために,入力)

のフィールドのためのあなたのxmlにこれを追加します。

android:inputType="numberDecimal" 
+0

android:inputType = "numberDecimal"は問題を解決しませんDecimalFormatは(0.0)ですが、私のフィールドに0,0があると... – Hryasch

0

1)利用者が米国英語のロケールを持つかどうかをチェックし、多くの場合、ユーザは、特定のフロートリテラル言語を含むことができます。

2))(set_temp.getText()。Float.parseFloat(からtoString()を取り外し)とset_temp.getTextをチェック()。toString()を正しい数字列リテラル復帰され、その後のparseIntに渡します。

関連する問題