Android计算器上一个选项功能

时间:2015-12-04 05:56:23

标签: android calculator

我试图从头开始学习android开发。 所以基本上它将是一个计算器。 我对计算函数进行编码的方式如下:

 private boolean action = false;
 private String fNum;
 private String sNum;
 private String preOp = "=";

操作作为检查是否存在任何先前选项的标志。 fNum和sNum需要照顾的数量。 fNum是单击计算符号按钮之前的一个,sNum是单击符号按钮后的数字。 preOp作为上一次操作的存储。

private double Calculate(String fn, String sn){
    switch (preOp) {
        case "plus":
            return Double.parseDouble(fn) + Double.parseDouble(sn);
        case "minus":
            return Double.parseDouble(fn) - Double.parseDouble(sn);
        case "multiply":
            return Double.parseDouble(fn) * Double.parseDouble(sn);
        case "device":
            return Double.parseDouble(fn) / Double.parseDouble(sn);
        case "=":
            return Double.parseDouble(sn);
        default:
            return 0;
    }

}

实际运行计算的功能。

case R.id.buttonPlus:{
            if(action){
                fNum = text.getText().toString();
                text.setText("0");
                preOp = "plus";
                action = true;
            }
            else if (!action){
                sNum = text.getText().toString();
                text.setText(String.valueOf(Calculate(fNum, sNum)));
                preOp = "plus";
            }
        }break;
        case R.id.buttonE:{
            if(action){
                sNum = text.getText().toString();
                text.setText(String.valueOf(Calculate(fNum, sNum)));
                preOp = "=";
            }
        }break;

按钮功能。

所以当我点击+按钮时出现错误:

12-04 05:53:04.198 31194-31194/tian.secondproject E/AndroidRuntime: FATAL EXCEPTION: main
    Process: tian.secondproject, PID: 31194
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
    at java.lang.StringToReal.parseDouble(StringToReal.java:263)
    at java.lang.Double.parseDouble(Double.java:301)
    at tian.secondproject.MainActivity.Calculate(MainActivity.java:21)
    at tian.secondproject.MainActivity.onClick(MainActivity.java:226)
    at android.view.View.performClick(View.java:5198)
    at android.view.View$PerformClick.run(View.java:21147)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

那么,我是用错误的方法做的吗?或者我犯了一些简单的错误?

谢谢:)

0 个答案:

没有答案