一个简单的计算器

适合初学者的java编写的一个简单的计算器,有GUI界面,有一些注释。

运行界面

代码在这里插入图片描述

package jisuanqi;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class jisuanqi extends JFrame {
private int add=1,sub=2,mul=3,div=4;
private int op=0;
boolean ifOp;
private String output="0";
private Button[] jba=new Button[]{new Button("7"),new Button("8"),
new Button("9"),new Button("+"),
new Button("4"),new Button("5"),new Button("6"),new Button("-"),
new Button("1"),new Button("2"),new Button("3"),new Button("*"),
new Button("0"),new Button("."),new Button("="),new Button("/")};
private JPanel jpt=new JPanel();
private JPanel jpb=new JPanel();
private JTextField jtf=new JTextField("");
private jisuanqi(){
	jpt.setLayout(new BorderLayout());
	jpt.add(jtf);
	this.add(jpt,BorderLayout.NORTH);
	jpb.setLayout(new GridLayout(4,4));//窗口布局
	for(int i=0;i<jba.length;i++){
	jpb.add(jba[i]);
	if(i==3||i==7||i==11||i==15||i==14)
	jba[i].addActionListener(new setOperate_Act());
	else
	jba[i].addActionListener(new setLabel_Act());
	}
	this.add(jpb,BorderLayout.CENTER);
	this.setSize(300, 250);//界面大小
	this.setLocationRelativeTo(null);      //界面居中
	//this.setResizable(false);//窗口大小不可改变
	this.setVisible(true);//窗口大小可改变
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口样式
}
private void operate(String x){
	double x1=Double.valueOf(x);
	double y=Double.valueOf(output);
	switch(op){
	case 0:output=x;break;
	case 1:output=String.valueOf(y+x1);break;
	case 2:output =String.valueOf(y-x1);break;
	case 3:output =String.valueOf(y*x1);break;
	case 4:
	if(x1!=0) output=String.valueOf(y/x1);
	else	output="不能为0";
	break;
	}
}
public String add(String x){
	operate(x);
	op=add;
	return output;
}
public String subtract(String x){
	operate(x);
	op=sub;
	return output;
}
public String multiply(String x){
	operate(x);
	op=mul;
	return output;
}
public String divide(String x){
	operate(x);
	op=mul;
	return output;
}
public String Equals(String x){
	operate(x);
	op=0;
	return output;
}
public void opClean(){
	op=0;
	output ="0";
}
class setOperate_Act implements ActionListener{
public void actionPerformed(ActionEvent e) {
	if(e.getSource()==jba[3]){
		jtf.setText(add(jtf.getText()));
		ifOp=true;
		}
		else if(e.getSource()==jba[7]){
		jtf.setText(subtract(jtf.getText()));
		ifOp=true;
		}
		else if(e.getSource()==jba[11]){
		jtf.setText(multiply(jtf.getText()));
		ifOp=true;
		}
		else if(e.getSource()==jba[15]){
		jtf.setText(divide(jtf.getText()));
		ifOp=true;
		}
		else if(e.getSource()==jba[14]){
		jtf.setText(Equals(jtf.getText()));
		ifOp=true;
		}
}
}
class setLabel_Act implements ActionListener{
public void actionPerformed(ActionEvent e) {
	Button tempb=(Button)e.getSource();
	if(ifOp){
	jtf.setText(tempb.getLabel());
	ifOp=false;
	}else {
	jtf.setText(jtf.getText()+tempb.getLabel());
	}
}
}
public static void main(String[] args) {
	new jisuanqi();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值