1

アンドロイド 2.3.3

プログラム: 電卓

文字列をEditText取る があります (例: 100+1.20+45+...)

1.20を使用して longに解析しようとするとLong.parseLong(1.20)、次のエラーが発生します。

12-07 14:28:32.902: E/AndroidRuntime(771): FATAL EXCEPTION: main
12-07 14:28:32.902: E/AndroidRuntime(771): java.lang.NumberFormatException: 1.20
12-07 14:28:32.902: E/AndroidRuntime(771):  at java.lang.Long.parse(Long.java:353)
12-07 14:28:32.902: E/AndroidRuntime(771):  at java.lang.Long.parseLong(Long.java:344)
12-07 14:28:32.902: E/AndroidRuntime(771):  at java.lang.Long.parseLong(Long.java:311)

私も試しLong.valueOf()てみましたが、どこかで読んだように、 as が値をLong.valueOf()返すLongオブジェクトをLong.parseLong()返しlongます。だから、私がやろうとしていることが正しいことを願っています。

これに関する考えられるすべての質問を読みましたが、解決できませんでした。誰か助けてくれませんか。

必要な場合のコード...

long result=0;
String expression = editText1.getText().toString();
String[] strArrayExpression2 = expression.split("\\+");


for(int i=0; i<strArrayExpression2.length;i++)
{
  result += Long.parseLong(strArrayExpression2[i]);
}

答え ::: 必要に応じて Float.parseFloat() または Double.parseDouble() を使用します。

4

3 に答える 3

1

doubleの代わりに使用してみてくださいlong:

String strInput = edittext.getText().toString();
double d = Double.parseDouble(strInput );

// 編集

double result=0;
String expression = editText1.getText().toString();
String[] strArrayExpression2 = expression.split("\\+");


for(int i=0; i<strArrayExpression2.length;i++)
{
  result += Double.parseDouble(strArrayExpression2[i]);
}
于 2012-12-07T09:16:01.343 に答える
1

これを使って:

String str = edtText.getEditableText.toString();

Float l = Float.parseFloat(str)

于 2012-12-07T09:22:43.973 に答える
0

これは、デバイスのロケールに問題がある可能性があると思います。一部の国では'。' と'、'は同じ意味を持っていません。たとえば、英語で書かれた番号1.20は、ここドイツでは1,20になります。同じ値、異なる表記。

于 2012-12-07T09:13:21.893 に答える