2015-02-11 38 views
0

我是Android應用程序開發新手,只是爲了好玩,我試圖用自定義鍵盤創建計算器應用程序。我幾乎可以在我的應用程序中使用所有功能。只是最後一步不行。Android雙變量計算正在崩潰應用程序

所以,當我嘗試用+,計算 - ,*或/最後一個字符串,我得到會是什麼樣子

1 + 2 * 3/1 - 2(實際上以字符串格式)

和我通過轉換

雙d =新雙人在變量存儲該(字符串 「1 + 2 * 3/1 - 2」)

如果我只是打印出來具有正常的java,System.out.println(d);

我得到「5.0」作爲答案。我不介意這個答案。但是當我嘗試打印下面的代碼時,

 ((Button)findViewById(R.id.cal_EQ)).setOnClickListener(new View.OnClickListener(){ 



@Override 
public void onClick(View v) { 


if(inputKB.getText().toString() != null && inputKB.getText().toString().length() > 0) { 
    calcDisplay.setText(String.valueOf(new Double((inputKB.getText().toString())))); 
       } 
      } 
     }); 

其崩潰的應用程序。那麼我應該怎麼做才能得到像5.0這樣的結果並將其顯示到scree?

感謝您的時間和事先的幫助。 )

02-10 19:18:46.789 29734-29734/io.github.xyz.calc E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: io.github.xyz.calc, PID: 29734 
    java.lang.NumberFormatException: Invalid double: "5 + 5" 
      at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
      at java.lang.StringToReal.parseDouble(StringToReal.java:269) 
      at java.lang.Double.parseDouble(Double.java:295) 
      at java.lang.Double.<init>(Double.java:136) 
      at io.github.xyz.calc.RegCalcActivity$7.onClick(RegCalcActivity.java:118) 
      at android.view.View.performClick(View.java:4480) 
      at android.view.View$PerformClick.run(View.java:18686) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:157) 
      at android.app.ActivityThread.main(ActivityThread.java:5872) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674) 
      at dalvik.system.NativeStart.main(Native Method) 
02-10 19:18:49.002 29734-29734/io.github.xyz.calc D/Process﹕ killProcess, pid=29734 
02-10 19:18:49.002 29734-29734/io.github.xyz.calc D/Process﹕ com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException:131 java.lang.ThreadGroup.uncaughtException:693 java.lang.ThreadGroup.uncaughtException:690 
02-10 19:18:49.352 30138-30138/io.github.xyz.calc I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build: MINGHSUC_AU_LINUX_ANDROID_KK_2.7_RB1.04.04.02.007.047+PATCH[ES]_msm8960_refs/tags/AU_LINUX_ANDROID_KK_2.7_RB1.04.04.02.007.047__release_ENGG() 
    OpenGL ES Shader Compiler Version: 17.01.12.SPL 

這是logcat的錯誤日誌和管線118

calcDisplay.setText(String.valueOf(new Double((inputKB.getText().toString())))); 

感謝名單;)

+1

,你可以看到'「5 + 5」'是無效的數量 – 2015-02-11 01:44:47

+0

所以,我應該怎麼辦呢?因爲你可以看到我將字符串轉換爲雙倍。 – 2015-02-11 01:46:42

回答

0

數學未在String構造明確支持,所以這將是JRE依賴性的。 Android JRE會去掉任何支持未記錄功能的代碼也就不足爲奇了。有第三方庫,如JEval,MVEL或Jep(許可)。

0

,你可以通過在啓動加支架試試這個,結束

calcDisplay.setText(String.valueOf(new Double(("("+inputKB.getText().toString()+")"))));