2012-12-07 20 views
1

的Android 2.3.3轉換字符串(EditText上輸入),以龍的Android

程序:計算器

我有一個EditText,需要一個字符串(如:100+1.20+45+...

當我嘗試解析1.20要長,使用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對象,其中如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.20' **不是**很長,請參閱'Math.round'或類似的東西 – 2012-12-07 09:12:00

+0

您能爲我們發佈代碼嗎? –

+0

事情是我必須在輸入中添加所有數字。例如,100 + 1.20 + 45應該給我146.20,並且回合只會給我146,這不是正確的值。 –

回答

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]); 
} 
+0

如何將'100 + 1.20 + 45 + ...'刺痛成任何數字? –

+0

抱歉是一個錯字.. – ZealDeveloper

0

我認爲這可能是您的設備區域設置的問題。在一些國家'。'和','不相同的意思。例如,英文書面數字1.20在德國將爲1,20。相同的值,不同的符號。

1

使用本:

String str = edtText.getEditableText.toString();

Float l = Float.parseFloat(str)