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()过,但是当我在某处阅读时,Long.valueOf()返回一个Long对象,其中 asLong.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 回答