嘗試將textviews文本設置爲數字時,出於某種原因,我總是遇到問題。在下面的代碼中,我試圖製作一個小費計算器,但是當我運行該應用程序時,它強制關閉。當我刪除OnClick偵聽器中的項目時,該應用工作得很好。我會在代碼後發佈logcat。請告訴我其他任何有用的信息,以便我可以發佈以提高我的問題得到解答的機會。嘗試乘法和顯示雙精度時出現錯誤android
billAmount = (EditText) findViewById(R.id.billAmount);
tipPercent = (EditText) findViewById(R.id.tipPercent);
這些都是editTexts。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.calculateTip:
double billAmt = Double.parseDouble(billAmount.toString());
double tipAmt = Double.parseDouble(tipPercent.toString());
double billtip = (billAmt * tipAmt)/100;
totalTip.setText("" + Double.toString(billtip));
break;
}
}
這裏的logcat的
04-22 01:20:20.104: W/KeyCharacterMap(589): No keyboard for id 0
04-22 01:20:20.104: W/KeyCharacterMap(589): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
04-22 01:20:24.174: D/AndroidRuntime(589): Shutting down VM
04-22 01:20:24.174: W/dalvikvm(589): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-22 01:20:24.195: E/AndroidRuntime(589): FATAL EXCEPTION: main
04-22 01:20:24.195: E/AndroidRuntime(589): java.lang.NumberFormatException: [email protected]
04-22 01:20:24.195: E/AndroidRuntime(589): at org.apache.harmony.luni.util.FloatingPointParser.initialParse(FloatingPointParser.java:130)
04-22 01:20:24.195: E/AndroidRuntime(589): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:281)
04-22 01:20:24.195: E/AndroidRuntime(589): at java.lang.Double.parseDouble(Double.java:287)
04-22 01:20:24.195: E/AndroidRuntime(589): at com.tool.TipCalculator.onClick(TipCalculator.java:38)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.view.View.performClick(View.java:2408)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.view.View$PerformClick.run(View.java:8816)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.os.Handler.handleCallback(Handler.java:587)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.os.Handler.dispatchMessage(Handler.java:92)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.os.Looper.loop(Looper.java:123)
04-22 01:20:24.195: E/AndroidRuntime(589): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-22 01:20:24.195: E/AndroidRuntime(589): at java.lang.reflect.Method.invokeNative(Native Method)
04-22 01:20:24.195: E/AndroidRuntime(589): at java.lang.reflect.Method.invoke(Method.java:521)
04-22 01:20:24.195: E/AndroidRuntime(589): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-22 01:20:24.195: E/AndroidRuntime(589): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-22 01:20:24.195: E/AndroidRuntime(589): at dalvik.system.NativeStart.main(Native Method)
我確信我已經解決了這個問題。只是在做
Double.parseDouble(editText.toString();
不起作用。我需要添加
Double.parseDouble(editText.getText().toString();
您將'billAmount'和'tipPercent'解析爲字符串,然後解析爲Double。他們在一開始是什麼?我看到很多NumberFormatException的潛在來源。您還可以在每行之間插入日誌消息,以查看它的中斷位置。 – yoshi 2012-04-22 01:28:53
billAmount和tipPercent是editTexts – Pjrat111 2012-04-22 01:30:45