我试图从头开始学习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)
那么,我是用错误的方法做的吗?或者我犯了一些简单的错误?
谢谢:)