2021-04-13 Java计算器

Operation运算类

abstract public class Operation {
	private double numberA=0;
	private double numberB=0;
	public Operation(double numberA, double numberB) {
		super();
		this.numberA = numberA;
		this.numberB = numberB;
	}
	
	public Operation() {
		super();
	}

	public double getNumberA() {
		return numberA;
	}
	public void setNumberA(double numberA) {
		this.numberA = numberA;
	}
	public double getNumberB() {
		return numberB;
	}
	public void setNumberB(double numberB) {
		this.numberB = numberB;
	}
	abstract public  double GetResult();
}

加减乘除类

public class OperationAdd extends Operation {
	@Override
	public double GetResult() {
		double result=0;
		result=getNumberA()+getNumberB();
		return result;
	}
}
public class OperationSub extends Operation{
    @Override
	public double GetResult() {
		double result=0;
		result=getNumberA()-getNumberB();
		return result;
	}
}
public class OperationMul extends Operation{
	@Override
	public double GetResult() {
		double result=0;
		result=getNumberA()*getNumberB();
		return result;
	}
}
public class OperationDiv extends Operation{
	@Override
	public double GetResult() {
		double result=0;
		if(getNumberB()==0)
			try {
				throw new Exception("除数不为0");
			} catch (Exception e) {
				
				e.printStackTrace();
			}
		result=getNumberA()/getNumberB();
		return result;
	}
}

简单工厂运算类

public class OperationFactory {
	public static Operation createOperate(String operate)
	{
		Operation oper=null;
		switch(operate)
		{
		case "+":
			oper=new OperationAdd();
			break;
		case "-":
			oper=new OperationSub();
			break;
		case "*":
			oper=new OperationMul();
			break;
		case "/":
			oper=new OperationDiv();
			break;
			
		}
		return oper;
	}

}

GUI界面

import java.awt.Button;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyFrame extends Frame {
	private static final long serialVersionUID = 1L;
	public TextArea ta;

	public MyFrame(String title) {
		super(title);
		SetTextAreas();
		SetBUttonArea();
		SetMainFram();
	}

	@SuppressWarnings("deprecation")
	private void SetMainFram() {
		this.setLayout(null);
		this.setSize(500, 400);
		this.setVisible(true);
		this.setLocation(310, 340);
		this.setResizable(false);
		ta.setEditable(false);
		this.setCursor(Cursor.HAND_CURSOR);
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	private void SetTextAreas() {
		ta = new TextArea(" ", 8, 52, 3);
		ta.setBackground(Color.white);
		ta.setLocation(20, 60);
		ta.setSize(480, 100);
		ta.setFont(new Font("", Font.BOLD, 40));
		this.add(ta);

	}

	double m, n;
	String k;
	boolean flag = true;
	boolean flag2 = false;
	Color wathet=new Color(129,213,248);//设置颜色
	

	protected void addButton(String string ,int i,int j, int x,int y){//设置按键的大小位置
		
		final Button b=new Button(string);
		b.setLocation(x, y);
		b.setSize(i,j);
		b.setBackground(wathet);
		b.setForeground(Color.white);
		b.setFont(new Font("",Font.BOLD, 40));
		b.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				counts();
				
			}
 
			private void counts() {
				Operation oper;
				if(ta.getText().equals("")&&(b.getActionCommand().equals("+")||
						b.getActionCommand().equals("-")||
						b.getActionCommand().equals("*")||
						b.getActionCommand().equals("/")||
						b.getActionCommand().equals("="))) {
					
				}else if(ta.getText().equals(".")&&(b.getActionCommand().equals("+")||
						b.getActionCommand().equals("-")||
						b.getActionCommand().equals("*")||
						b.getActionCommand().equals("/")||
						b.getActionCommand().equals("="))){
					
				}else {
				if(		b.getActionCommand().equals("+")||
						b.getActionCommand().equals("-")||
						b.getActionCommand().equals("*")||
						b.getActionCommand().equals("/")){
					if(flag2 = true) {
						flag2 = false;
					}
				if(flag) {
					n = new Double(ta.getText()).doubleValue();
					flag = false;
				}else {
					if(k=="="){
						
					}else {
						m = new Double(ta.getText()).doubleValue();
						if(k == "-") {
							 oper=OperationFactory.createOperate("-");
							 oper.setNumberA(m);
							 oper.setNumberB(n);

						}else if(k == "+") {
							 oper=OperationFactory.createOperate("+");
							 oper.setNumberA(m);
							 oper.setNumberB(n);
						}else if(k == "*") {
							 oper=OperationFactory.createOperate("*");
							 oper.setNumberA(m);
							 oper.setNumberB(n);
						}else if(k == "/") {
							 oper=OperationFactory.createOperate("/");
							 oper.setNumberA(m);
							 oper.setNumberB(n);
						}
					}
				}
					k = b.getActionCommand();
						ta.setText("");	
				}else if(b.getActionCommand().equals("=")) {
					m = new Double(ta.getText()).doubleValue();
					if(k == "+") {
						ta.setText("");
						ta.append(n+"+"+m);
						ta.append(System.getProperty("line.separator"));
						n = n+m;
						ta.append("="+n);
					}else if(k == "-") {
						ta.setText("");
						ta.append(n+"-"+m);
						ta.append(System.getProperty("line.separator"));
						n = n-m;
						ta.append("="+n);
					}else if(k == "*") {
						ta.setText("");
						ta.append(n+"*"+m);
						ta.append(System.getProperty("line.separator"));
						n = n*m;
						ta.append("="+n);
					}else if(k == "/") {
						ta.setText("");
						ta.append(n+"/"+m);
						ta.append(System.getProperty("line.separator"));
						n= n/m;
						ta.append("="+n);
					}
					k="=";
					flag2 = true;
				}else {
					if(flag2) {
						flag = true;
						flag2 = false;
						ta.setText("");
						m = n =0;
					}
					ta.append(b.getActionCommand());
				}
			}
		}
	});

		this.add(b);
		
	}

	private void SetBUttonArea() {
		addButton("7", 120, 50, 20, 178);
		addButton("8", 120, 50, 140, 178);
		addButton("9", 120, 50, 260, 178);
		addButton("/", 120, 50, 380, 178);

		addButton("4", 120, 50, 20, 228);
		addButton("5", 120, 50, 140, 228);
		addButton("6", 120, 50, 260, 228);
		addButton("*", 120, 50, 380, 228);

		addButton("1", 120, 50, 20, 278);
		addButton("2", 120, 50, 140, 278);
		addButton("3", 120, 50, 260, 278);
		addButton("-", 120, 50, 380, 278);

		addButton("0", 120, 50, 20, 328);
		addButton(".", 120, 50, 140, 328);
		addButton("+", 120, 50, 260, 328);

		addButton("=", 120, 50, 380, 328);
	}

}

实现:

public class CalGUI {
	public static void main(String[] args)
	{
		new MyFrame("Yamato 计算器");	
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值