在android中将字符串(EditText输入)转换为Long

时间:2012-12-07 09:09:52

标签: android numbers

Android 2.3.3

程序:计算器

我有一个EditText,它带有一个字符串(例如:100+1.20+45+...

当我尝试使用1.20Long.parseLong(1.20)解析为long时, 我收到以下错误。

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个对象,而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()。

3 个答案:

答案 0 :(得分: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]);
}

答案 1 :(得分:1)

使用它:

String str = edtText.getEditableText.toString();

Float l = Float.parseFloat(str)

答案 2 :(得分:0)

我认为这可能是您设备区域设置的问题。在一些国家''。和','不具有相同的含义。例如,德国的英文书面编号为1.20将为1,20。相同的值,不同的符号。