Android 2.3.3
程序:计算器
我有一个EditText
,它带有一个字符串(例如:100+1.20+45+...
)
当我尝试使用1.20
将Long.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()。
答案 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。相同的值,不同的符号。