📄 initcalculatestate.java
字号:
package lab5;
public class InitCalculateState extends CalculateState {
public InitCalculateState(CalculateController controller, Calculate c) {
super(controller, c);
}
public void inputD(double d) {
OnlyOp1 s = new OnlyOp1(calController, cal);
calController.changeState(s);
s.inputD(d);
}
}
class OnlyOp1 extends CalculateState {
public OnlyOp1(CalculateController controller, Calculate c) {
super(controller, c);
}
public void inputA() {
}
public void inputD(double d) {
calController.getCalculate().setOp1(d);
calController.getCalculate().SetCurStr(Double.toString(d));
}
public void inputU(Operator op) {
UniqueOpState u = new UniqueOpState(calController, cal);
//cal.setOp(op);
calController.changeState(u);
u.inputU(op);
}
public void inputB(Operator op) {
WaitOp2 b = new WaitOp2(calController, cal);
calController.getCalculate().setOp(op);
calController.changeState(b);
}
}
class UniqueOpState extends CalculateState {
public UniqueOpState(CalculateController controller, Calculate c) {
super(controller, c);
}
public void inputA() {
dothing();
}
public void inputD(double d) {
OnlyOp1 w = new OnlyOp1(calController, cal);
calController.changeState(w);
w.inputD(d);
}
public void inputU(Operator op) {
cal.setOp(op);
dothing();
}
public void inputB(Operator op) {
WaitOp2 wOp2 = new WaitOp2(calController, cal);
cal.setOp(op);
calController.changeState(wOp2);
}
private void dothing() {
try {
double op1 = cal.result();
cal.setOp1(op1);
cal.SetCurStr(Double.toString(op1));
} catch (Exception e) {
cal.clear();
cal.setResult(0.0);
cal.SetCurStr("异常!");
}
}
}
class WaitOp2 extends CalculateState {
public WaitOp2(CalculateController controller, Calculate c) {
super(controller, c);
}
public void inputA() {
try {
double op2 = cal.getOp1();
cal.setOp2(op2);
double result = cal.result();
cal.setResult(result);
cal.setOp1(result);
cal.SetCurStr(Double.toString(result));
HaveOp2 b = new HaveOp2(calController, cal);
calController.changeState(b);
} catch (Exception e) {
cal.clear();
cal.setResult(0.0);
cal.SetCurStr("异常!");
}
}
public void inputD(double d) {
try {
cal.setOp2(d);
cal.SetCurStr(Double.toString(d));
cal.setResult(cal.result());
HaveOp2 b = new HaveOp2(calController, cal);
calController.changeState(b);
} catch (Exception e) {
cal.clear();
cal.setResult(0.0);
}
}
public void inputU(Operator op) {
UniqueOpState u = new UniqueOpState(calController, cal);
calController.changeState(u);
u.inputU(op);
}
public void inputB(Operator op) {
cal.setOp(op);
}
}
class HaveOp2 extends CalculateState {
public HaveOp2(CalculateController controller, Calculate c) {
super(controller, c);
}
public void inputA() {
try {
double result = cal.result();
cal.setResult(result);
cal.setOp1(result);
cal.SetCurStr(Double.toString(result));
} catch (Exception e) {
cal.clear();
cal.setResult(0.0);
}
}
public void inputD(double d) {
OnlyOp1 w = new OnlyOp1(calController, cal);
calController.changeState(w);
w.inputD(d);
}
public void inputU(Operator op) {
UniqueOpState u = new UniqueOpState(calController, cal);
calController.changeState(u);
u.inputU(op);
}
public void inputB(Operator op) {
WaitOp2 w = new WaitOp2(calController, cal);
double result = cal.getResult();
cal.setOp1(result);
cal.setOp(op);
cal.SetCurStr(Double.toString(result));
calController.changeState(w);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -