java之计算器的实现

person smartzeng    watch_later 2017-06-03 20:46:49
visibility 5255    class java,JFrame,JPanel,计算器,源码    bookmark 分享

java实现计算器程序,代码如下:

package code;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * 
 * @author Smart
 *
 */
public class Calculator extends JFrame implements ActionListener{
	private JMenuBar jmb;
    private JMenu jm;
    private JMenuItem jmi1;
    private JTextField result;
    private JButton key[];
    private JPanel jp_but,jp_cal;
    private Mainpad jp_main;
    private Container con;
    private double opernum;
    private String keytitle[]={"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/", "!", "^", "C", "-/+", "1/x", "sqrt", "四舍五入", "back"}, 
    		opers = "";
    public Calculator()
    {
    	this.setSize(400,450);
    	this.setTitle("计算器");
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.jmb=new JMenuBar();
    	this.jm=new JMenu("文件");
    	this.jmi1=new JMenuItem("退出");
    	this.jm.add(this.jmi1);
    	this.result=new JTextField();
    	this.key=new JButton[24];
    	this.jp_but=new JPanel();
    	this.jp_cal=new JPanel();
    	this.jp_main=new Mainpad();
    	this.con=this.getContentPane();
    	this.jp_but.setLayout(new GridLayout(6,4,5,5));
    	this.jp_cal.setLayout(new BorderLayout());
    	this.jp_main.setLayout(new BorderLayout());
    	this.con.setLayout(new BorderLayout());
    	Font font = this.result.getFont();
    	this.result.setFont(new Font(font.getName(), font.getStyle(), 24));
    	for(int i=0;i<24;i++) {
	    	this.key[i]=new JButton(this.keytitle[i]);	
	    	this.key[i].setSize(60, 60);
	    	this.key[i].addActionListener(this);
	    	this.jp_but.add(key[i]);
	    	//System.out.println(i);
    	}
    	this.jmb.add(jm);
    	this.jp_main.add(jmb,BorderLayout.NORTH);
    	this.jp_main.add(jp_cal,BorderLayout.CENTER);
    	this.jp_cal.add(result,BorderLayout.NORTH);
    	this.jp_cal.add(this.jp_but,BorderLayout.CENTER);
    	this.con.add(jp_main);
    	this.jmi1.addActionListener(this);     
    	this.setBackground(Color.RED);
    	this.setLocation(400, 100);
    	this.setVisible(true);
    	
    }
	public static void main(String[] args) 
	{
		new Calculator();
	}
	@Override
	public void actionPerformed(ActionEvent evt) 
	{
		// TODO Auto-generated method stub
		//System.out.println(evt.getActionCommand());
		String oper=evt.getActionCommand();
		switch(oper) {
			case "0":
				this.result.setText(this.result.getText()+oper);
				break;
			case "1":
				this.result.setText(this.result.getText()+oper);
				break;
			case "2":
				this.result.setText(this.result.getText()+oper);
				break;
			case "3":
				this.result.setText(this.result.getText()+oper);
				break;
			case "4":
				this.result.setText(this.result.getText()+oper);
				break;
			case "5":
				this.result.setText(this.result.getText()+oper);
				break;
			case "6":
				this.result.setText(this.result.getText()+oper);
				break;
			case "7":
				this.result.setText(this.result.getText()+oper);
				break;
			case "8":
				this.result.setText(this.result.getText()+oper);
				break;
			case "9":
				this.result.setText(this.result.getText()+oper);
				break;
			case "+":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "+";
				break;
			case "-":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "-";
				break;
			case "*":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "*";
				break;
			case "/":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "/";
				break;
			case ".":
				this.result.setText(this.result.getText()+oper);
				break;
			case "^":
				this.opernum=Double.valueOf(this.result.getText());
				this.result.setText(this.result.getText()+"^");
				this.opers="^";
				break;
			case "-/+":
				this.result.setText(String.valueOf(-Double.valueOf(this.result.getText())));
				break;
			case "1/x":
				this.result.setText(String.valueOf(1/(Double.valueOf(this.result.getText()))));
				break;
			case "sqrt":
				this.result.setText(String.valueOf(Math.sqrt(Double.valueOf(this.result.getText()))));
				break;
			case "四舍五入":
				this.result.setText(String.valueOf((int) (Double.valueOf(this.result.getText())+0.5)));
				break;
			case "back":
				if(this.result.getText().length()>0)
					this.result.setText(this.result.getText().substring(0, this.result.getText().length()-1));
				break;
			case "C":
				this.result.setText("");break;
			case "!":
				this.result.setText(String.valueOf(this.JieCheng(Double.valueOf(this.result.getText()))));
				break;
			case "=":
				switch(this.opers) {
					case "+":
						this.result.setText (String.valueOf(this.opernum+Double.valueOf(this.result.getText())));
						break;
					case "-":
						this.result.setText (String.valueOf(this.opernum-Double.valueOf(this.result.getText())));
						break;
					case "*":
						this.result.setText (String.valueOf(this.opernum*Double.valueOf(this.result.getText())));
						break;
					case "/":
						this.result.setText (String.valueOf(this.opernum/Double.valueOf(this.result.getText())));
						break;
					case "^":
						this.result.setText( String.valueOf((Math.pow(this.opernum, Integer.valueOf(this.result.getText().toString().substring (this.result.getText().toString().indexOf('^')+1)))))); 
						break;
					default:
				}
				break;
			case "退出":	
				System.exit(0);
		}
	}
	public long JieCheng(double n3)
	{
		long n = (long)(n3 + 0.5);
		if(n==1 || n==0)
			return n;
		else if(n>1) {
			return n*JieCheng(n-1);
		} else {
			return 0;
		}
	}
    public boolean isDot(String num)
    {
    	if(Pattern.matches("[0-9].*", num)) {
    		return false;
    	} else {
    		return true;
    	}
    }
}

class Mainpad extends JPanel{
	public Mainpad()
	{
		this.setBackground(Color.RED);
	}
}


评论区
评论列表
menu