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

📄 calculator.java

📁 用Java编写的简单的计算器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*本计算器只实现了整数的加减乘除以及C键和CE键的功能,C表示关闭计算机CE表示清零*/
import javax.swing.*;
public class Calculator {
	public JFrame f = new JFrame();
	public JPanel p = new JPanel();
	public JPanel p1 = new JPanel();
	public JPanel p2 = new JPanel();
	public JPanel p5 = new JPanel();
	public JPanel p6 = new JPanel();
	public JPanel p7 = new JPanel();
	public JPanel p8 = new JPanel();
	public JLabel lb2 = new JLabel();
	public JTextField tf = new JTextField("",20);
    public JButton b2 = new JButton("MC");
    public JButton b3 = new JButton("MR");
    public JButton b4 = new JButton("MS");
    public JButton b5 = new JButton("M+");
    public JButton b6 = new JButton("Backspace");
    public JButton b7 = new JButton("   CE  ");
    public JButton b8 = new JButton("   C   ");
    public String name[] = {"0","1","2","3","4","5","6","7","8","9"};
    public JButton bp = new JButton("+");
    public JButton be = new JButton("=");
    public JButton me = new JButton("-");
    public JButton ce = new JButton("*");
    public JButton de = new JButton("/");
    public JButton te = new JButton("  % ");
    public JButton sq = new JButton("sqrt");
    public JButton ds = new JButton("1/x");
    public JButton si = new JButton("sin");
    public JButton co = new JButton("cos");
    public JButton ta = new JButton("tan");
    public JButton ex = new JButton("exp");
    public JButton jj = new JButton("+/-");
    public JButton di = new JButton(" . ");
    public JButton lg = new JButton("log10");
    public JMenuItem mi1 = new JMenuItem("编辑");
    public JMenuItem mi2 = new JMenuItem("查看");
    public JMenuItem mi3 = new JMenuItem("帮助");
    Computer c = new Computer();
    public JButton button[] = new JButton[name.length];
	class MyActionListener implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			String f1 = tf.getText();
			Double i =Double.parseDouble(f1);
			tf.setText("0");
			c.sign(e.getActionCommand(), i);
		}
	}
	class MyActionListener2 implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			String f1 = tf.getText();
			Double i =Double.parseDouble(f1);
			c.sign(e.getActionCommand(), i);
			tf.setText(""+c.computer2());
		}
	}
	
    public Calculator(){
    	f.setSize(450,420);
    	f.add(p,new BorderLayout().NORTH);
    	f.setResizable(false);
    	f.add(p1,new BorderLayout().WEST);
    	f.add(p2,new BorderLayout().CENTER);
    	p2.add(p5,new BorderLayout().NORTH);
    	p5.add(p7,new BorderLayout().NORTH);
    	p5.add(p8,new BorderLayout().EAST);
    	p2.add(p6,new BorderLayout().CENTER);
        p1.setLayout(new GridLayout(5,1,3,3));
        p1.add(lb2);
        p1.add(b2);
        p1.add(b3);
        p1.add(b4);
        p1.add(b5);
        float rr = (float)Math.random();
        float gg = (float)Math.random();
        float bb = (float)Math.random();
        p1.setBackground(new Color(rr,gg,bb));
        p2.setBackground(new Color(rr,gg,bb));
        p.setLayout(new GridLayout(1,3,2,2));
        p.add(mi1);
        p.add(mi2);
        p.add(mi3);
        p7.add(tf);
        p8.setLayout(new GridLayout(3,1));
        p8.add(b6);
        p8.add(b7);
        p8.add(b8);
        
        for(int i = 0;i < name.length ;i++){
             button[i] = new JButton(name[i]);
        }
        p6.setBackground(new Color(rr,gg,bb));
        p6.setLayout(new GridLayout(5,5,14,24));
        p6.add(button[7]);
        p6.add(button[8]);
        p6.add(button[9]);
        p6.add(de);
        p6.add(sq);
        p6.add(button[4]);
        p6.add(button[5]);
        p6.add(button[6]);
        p6.add(ce);
        p6.add(te);
        p6.add(button[1]);
        p6.add(button[2]);
        p6.add(button[3]);
        p6.add(me);
        p6.add(ds);
        p6.add(button[0]);
        p6.add(jj);
        p6.add(di);
        p6.add(bp);
        p6.add(be);
        p6.add(si);
        p6.add(co);
        p6.add(ta);
        p6.add(ex);
        p6.add(lg);
        
      
        p.setBackground(Color.black);
       
		f.setVisible(true);
		//================windowListener===========================
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(1);
			}
		});  
		
		//================BackSpace的响应============================
		b6.addMouseListener(new MouseAdapter(){

			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				String s = tf.getText();
				String ss = tf.getText().substring(0, s.length()-1);
			    tf.setText(ss);
			}
			
		});
		//=============数字键0到9的响应==============================
		for(int i = 0;i < name.length;i++){
			button[i].addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					String s = e.getActionCommand();
					String v = tf.getText();
					if(v.equals("0")){
						tf.setText(s);
					}
					else{
						tf.setText(v + s);
					}
				}
			});
		}
		
		//================点的响应======================================
		di.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String s = e.getActionCommand();
				String v = tf.getText();
				if(v.equals("0")){
					tf.setText(s);
				}
				else{
					if(v.contains(".")&&s.equals(s)){
					tf.setText(v);
					}else {
					tf.setText(v + ".");
				}
				}
			}
		});
		
		
		//==============C键与CE键的响应=================================
		b7.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				tf.setText("0");
			}
			
		});
		b8.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				tf.setText("");
			}
			
		});
		
		//============整数的加减乘除响应===============================
		MyActionListener ma = new MyActionListener();
		bp.addActionListener(ma);
		me.addActionListener(ma);
        de.addActionListener(ma);
        ce.addActionListener(ma);
        te.addActionListener(ma);
        
        //==========一元运算符的响应===================================
        MyActionListener2 ma1 = new MyActionListener2();
        ds.addActionListener(ma1);
        sq.addActionListener(ma1);
        si.addActionListener(ma1);
        co.addActionListener(ma1);
        ta.addActionListener(ma1);
        ex.addActionListener(ma1);
        lg.addActionListener(ma1);
        jj.addActionListener(ma1);
        
        //=============等号响应======================================
        be.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String s = e.getActionCommand();
				String f2 = tf.getText();
				Double i = Double.parseDouble(f2);
				double r = c.compute(i);
				tf.setText(""+r);
			}
		});
	}
    
    //================main方法========================================
	public static void main(String args[]){
		Calculator cal = new Calculator();	
	}
}

   //================类Computer=======================================
class Computer{	
	public double f1;
	public String sign;
	
	//==============两元运算的实现=======================================
	public double compute(double f2){
		if(sign != null){
			if(sign.equals("+")){
				double r = f1 + f2;
				f1 = 0;
				sign = null;
				return r;
			}
			if(sign.equals("-")){
				double r = f1-f2;
				f1 = 0;
				sign = null;
				return r;
			}
			if(sign.equals("*")){
				double r = f1*f2;
				f1 = 0;
				sign = null;
				return r;
			}
			if(sign.equals("/")){
				double r = f1/f2;
				f1 = 0;
				sign = null;
				return r;
			}
			if(sign.equals("%")){
				double r = f1%f2;
				f1 = 0;
				sign = null;
				return r;
			}
		}
		return 0;
	}
	
	//===============一元运算符的实现====================================
	public double computer2(){
	    double r = 0;
		if(sign.equals("1/x")){
			 r = 1/f1;
		}
		if(sign.equals("sqrt")){
			r = Math.sqrt(f1);
		}
		if(sign.equals("sin")){
			r = Math.sin(f1);
		}
		if(sign.equals("cos")){
			r = Math.cos(f1);
		}
		if(sign.equals("tan")){
			r = Math.tan(f1);
		}
		if(sign.equals("exp")){
			r = Math.exp(f1);
		}
		if(sign.equals("log10")){
			r = Math.log10(f1);
		}
		if(sign.equals("+/-")){
				r = -f1;
		}
		
		
		return r;
		
	}
	public void sign(String s, double f1){
		this.sign = s;
		this.f1 = f1;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -