⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initcalculatestate.java

📁 用java编写的实现计算器的众多功能 方便实用
💻 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 + -