2012-04-22 55 views
0

尝试将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(); 
+1

您将'billAmount'和'tipPercent'解析为字符串,然后解析为Double。他们在一开始是什么?我看到很多NumberFormatException的潜在来源。您还可以在每行之间插入日志消息,以查看它的中断位置。 – yoshi 2012-04-22 01:28:53

+0

billAmount和tipPercent是editTexts – Pjrat111 2012-04-22 01:30:45

回答

5

使用billAmount.getText().toString();,而不是billAmount.toString();

与同为tipPercent

+0

谢谢,我只是编辑我的帖子,以包括我已经想通了。无论如何感谢帖子,如果我没有看到论坛帖子,我不会记得这么做。 – Pjrat111 2012-04-22 01:39:57

+0

是的,它发生了,很高兴你明白了,在你的编码中祝你好运! – 2012-04-22 01:47:20

0

您需要检查EditText字段是否具有合法的double值。这个例外来自于试图解析看起来不是双重的东西。

相关问题