独一无二的Java计算器

用Java写的一个计算器,如下图:
计算器
代码:

package Node;


import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class calculator extends JFrame implements ActionListener{
	private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
	,b12,b13,b14,b15,b16,b17,b18,b19,b20;
	private JTextArea text=new JTextArea(3,20);
	private JPanel p=new JPanel();
	private double sum=0;
	private double num1,num2;
	private String s;
	private int x;
	private boolean flag=true,flag1=false,flag2=false,flag3=false,
			flag4=true;
	JFrame frame=new JFrame("计算器");
	public calculator(){
		p.setLayout(new GridLayout(5,4));
		b1=new Button("c");
		b1.setBackground(Color.green);
		p.add(b1);
		p.add(b2=new Button("<-"));
		p.add(b3=new Button("%"));
		p.add(b4=new Button("/"));
		p.add(b5=new Button("7"));
		p.add(b6=new Button("8"));
		p.add(b7=new Button("9"));
		p.add(b8=new Button("*"));
		p.add(b9=new Button("4"));
		p.add(b10=new Button("5"));
		p.add(b11=new Button("6"));
		p.add(b12=new Button("-"));
		p.add(b13=new Button("1"));
		p.add(b14=new Button("2"));
		p.add(b15=new Button("3"));
		p.add(b16=new Button("+"));
		p.add(b17=new Button("00"));
		p.add(b18=new Button("0"));
		p.add(b19=new Button("."));
		b20=new Button("=");
		b20.setBackground(Color.red);
		p.add(b20);
		b1.addActionListener(this);
		b2.addActionListener(this);
		b3.addActionListener(this);
		b4.addActionListener(this);
		b5.addActionListener(this);
		b6.addActionListener(this);
		b7.addActionListener(this);
		b8.addActionListener(this);
		b9.addActionListener(this);
		b10.addActionListener(this);
		b11.addActionListener(this);
		b12.addActionListener(this);
		b13.addActionListener(this);
		b14.addActionListener(this);
		b15.addActionListener(this);
		b16.addActionListener(this);
		b17.addActionListener(this);
		b18.addActionListener(this);
		b19.addActionListener(this);
		b20.addActionListener(this);
		frame.add(text,BorderLayout.PAGE_START);
		frame.add(p,BorderLayout.CENTER);
		frame.setSize(300,250);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
    public void actionPerformed(ActionEvent e) {
    	try{
		if(e.getSource()==b1){//c
			s=null;
			text.setText(null);
			flag=true;
			flag1=false;
			flag2=false;
			flag3=false;
			flag4=true;
		}else if(e.getSource()==b2){//<-  
			if(text.getText().length()>0){//在字符长度小于0时是不能操作的
			text.setText(text.getText().substring(0,text.getText().length()-1));
			}
			else{
				text.setText("");
			}	
		}else if(e.getSource()==b3){//%
			if(flag1==true&&flag3==true&&text.getText().length()>0){
			s=text.getText();
			num1=Double.parseDouble(s);
			text.setText(null);
			s=null;
			x=0;
			flag=true;
			flag1=true;
			flag3=false;
			flag4=false;
			}
		}else if(e.getSource()==b4){// (/)
			if(flag1==true&&flag3==true&&text.getText().length()>0){
			s = text.getText();
			num1=Double.parseDouble(s);
			text.setText(null);
			s=null;
			x=1;
			flag=true;
			flag3=false;
			flag4=false;
			}
		}else if(e.getSource()==b5){//7
			if(flag==true){
			s = text.getText();
			text.setText(s+"7");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b6){//8
			if(flag==true){
			s = text.getText();
			text.setText(s+"8");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b7){//9
			if(flag==true){
			s = text.getText();
			text.setText(s+"9");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b8){//*
			if(flag1==true&&flag3==true&&text.getText().length()>0){
			s = text.getText();
			num1=Double.parseDouble(s);
			text.setText(null);
			s=null;
			x=2;
			flag=true;
			flag3=false;
			flag4=false;
			}
		}else if(e.getSource()==b9){//4
			if(flag==true){
			s = text.getText();
			text.setText(s+"4");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b10){//5
			if(flag==true){
			s = text.getText();
			text.setText(s+"5");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b11){//6
			if(flag==true){
			s = text.getText();
			text.setText(s+"6");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b12){//-
			if(flag1==true&&flag3==true&&text.getText().length()>0){
			s = text.getText();
			num1=Double.parseDouble(s);
			text.setText(null);
			s=null;
			x=3;
			flag=true;
			flag3=false;
			flag4=false;
			}
		}else if(e.getSource()==b13){//1
			if(flag==true){
			s = text.getText();
			text.setText(s+"1");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b14){//2
			if(flag==true){
			s = text.getText();
			text.setText(s+"2");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b15){//3
			if(flag==true){
			s = text.getText();
			text.setText(s+"3");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b16){//+
			if(flag1==true&&flag3==true&&text.getText().length()>0){
			s = text.getText();
			num1=Double.parseDouble(s);
			text.setText(null);
			s=null;
			x=4;
			flag=true;
			flag3=false;
			flag4=false;
			}
		}else if(e.getSource()==b17){//00
			if(flag==true&&flag2==true){
			s = text.getText();
			text.setText(s+"00");
			flag1=true;
			}
		}else if(e.getSource()==b18){//0
			if(flag==true){
			s = text.getText();
			text.setText(s+"0");
			flag1=true;
			flag3=true;
			}
		}else if(e.getSource()==b19){//(.)
			if(flag==true){
			s=text.getText();
			text.setText(s+".");
			flag1=true;
			flag2=true;
			flag3=true;
			}
		}else if(e.getSource()==b20){//=
			if(flag==true&&flag1==true&&flag3==true&&flag4==false){//由操作数,运算符,共同控制输出符号
			s=text.getText();
			num2=Double.parseDouble(s);
			switch(x){
			case 0://%
				text.setText(""+(num1%num2));break;
			case 1://(/)
				text.setText(""+(num1/num2));break;
			case 2://*
				text.setText(""+(num1*num2));break;
			case 3://-
				text.setText(""+(num1-num2));break;
			case 4://+
				text.setText(""+(num1+num2));break;
			}
			flag=false;
			flag4=true;
		 }
	  }
    	}catch(Exception e1){
    		JOptionPane.showMessageDialog(this,"请正确操作","error",JOptionPane.INFORMATION_MESSAGE);
			System.exit(0);
    	}
			
    }
	
	public static void main(String[] args) {
		new calculator();
	}
}

文件下载地址://download.csdn.net/download/user_name_CSDN/12029203

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了不起的企鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值