Java语言实现计算器

写了三百多行,基本实现了加减乘除,平方,次方,开方,倒数,相反数这些功能,仅供参考,希望能帮到大家

package JiSuanQiDemo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class jiemian extends JFrame implements ActionListener{
	//打开一个窗口,标题为“计算器”
	JFrame f =new JFrame("计算器");
	//创建一个画板,将组件放在这个画板上
	  Panel p = new Panel();
	  /**
	   * 定义功能键和数字键
	   */
	  Button keyCE,keyC,keyDelete,keyDivision;
	  Button keyRoot,keyOne,keyTwo,keyThere,keyRide;
	  Button keySquare,keyFour,keyFive,keySix,keyReduce;
	  Button keyCubic,keySeven,keyEight,keyNine,keyAddition;
	  Button keyReciprocal,keyPlusOrMinus,keyZero,keySpot,keyEqual;
	  TextField text;
	  //初始化算术和和运算符
	  double num=0,sum=0,find=1;
	  int find2=1;
	  char c='+';
	/**
	 * 面板设计
	 */
	  public void jianli() {
		//  创建按钮,设计面板
	//初始化画板,这样组件的大小才可以改变
	  p.setLayout(null);
	  //创建文本行,用来显示计算结果
	  text = new TextField("0");
	  //设置文本行位置大小
	  text.setBounds(10, 10, 230, 20);
	  //将文本行放入到画板中
	  p.add(text);
	  
	 //创建一个按钮
	  keyCE=new Button("CE");
	  //初始化大小位置
	  keyCE.setBounds(60, 30, 50, 50);
	  //放入到画板里
	  p.add(keyCE);
	  //添加监听器
	  keyCE.addActionListener(this);
	  
	  keyC=new Button("C");
	  keyC.setBounds(110, 30, 50, 50);
	  p.add(keyC);
	  keyC.addActionListener(this);
	  keyDelete =new Button("delete");
	  keyDelete.setBounds(160, 30, 50, 50);
	  p.add(keyDelete);
	  keyDelete.addActionListener(this);
	  keyDivision =new Button("÷");
	  keyDivision.setBounds(210, 30, 50, 50);
	  p.add(keyDivision);
	  keyDivision.addActionListener(this);
	  
	  keyRoot=new Button("√");
	  keyRoot.setBounds(10, 80, 50, 50);
	  p.add(keyRoot);
	  keyRoot.addActionListener(this);
	  keyOne=new Button("1");
	  keyOne.setBounds(60, 80, 50, 50);
	  p.add(keyOne);
	  keyOne.addActionListener(this);
	  keyTwo=new Button("2");
	  keyTwo.setBounds(110, 80, 50, 50);
	  p.add(keyTwo);
	  keyTwo.addActionListener(this);
	  keyThere =new Button("3");
	  keyThere.setBounds(160, 80, 50, 50);
	  p.add(keyThere);
	  keyThere.addActionListener(this);
	  keyRide =new Button("*");
	  keyRide.setBounds(210, 80, 50, 50);
	  p.add(keyRide);
	  keyRide.addActionListener(this);
	  
	  keySquare=new Button("x²");
	  keySquare.setBounds(10, 130, 50, 50);
	  p.add(keySquare);
	  keySquare.addActionListener(this);
	  keyFour=new Button("4");
	  keyFour.setBounds(60, 130, 50, 50);
	  p.add(keyFour);
	  keyFour.addActionListener(this);
	  keyFive=new Button("5");
	  keyFive.setBounds(110, 130, 50, 50);
	  p.add(keyFive);
	  keyFive.addActionListener(this);
	  keySix =new Button("6");
	  keySix.setBounds(160, 130, 50, 50);
	  p.add(keySix);
	  keySix.addActionListener(this);
	  keyReduce  =new Button("-");
	  keyReduce.setBounds(210, 130, 50, 50);
	  p.add(keyReduce);
	  keyReduce.addActionListener(this);
	  
	  keyCubic=new Button("x³");
	  keyCubic.setBounds(10, 180, 50, 50);
	  p.add(keyCubic);
	  keyCubic.addActionListener(this);
	  keySeven=new Button("7");
	  keySeven.setBounds(60, 180, 50, 50);
	  p.add(keySeven);
	  keySeven.addActionListener(this);
	  keyEight=new Button("8");
	  keyEight.setBounds(110, 180, 50, 50);
	  p.add(keyEight);
	  keyEight.addActionListener(this);
	  keyNine =new Button("9");
	  keyNine.setBounds(160, 180, 50, 50);
	  p.add(keyNine);
	  keyNine.addActionListener(this);
	  keyAddition  =new Button("+");
	  keyAddition.setBounds(210, 180, 50, 50);
	  p.add(keyAddition);
	  keyAddition.addActionListener(this);

	  keyReciprocal=new Button("1/x");
	  keyReciprocal.setBounds(10, 230, 50, 50);
	  p.add(keyReciprocal);
	  keyReciprocal.addActionListener(this);
	  keyPlusOrMinus=new Button("±");
	  keyPlusOrMinus.setBounds(60, 230, 50, 50);
	  p.add(keyPlusOrMinus);
	  keyPlusOrMinus.addActionListener(this);
	  keyZero=new Button("0");
	  keyZero.setBounds(110, 230, 50, 50);
	  p.add(keyZero);
	  keyZero.addActionListener(this);
	  keySpot =new Button("·");
	  keySpot.setBounds(160, 230, 50, 50);
	  p.add(keySpot);
	  keySpot.addActionListener(this);
	  keyEqual  =new Button("=");
	  keyEqual.setBounds(210, 230, 50, 50);
	  p.add(keyEqual);
	  keyEqual.addActionListener(this);
	  //text.setText("1");
	  f.add(p);
	  f.setBounds(200,200,280,330);
	  f.setVisible(true);
	  f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	  
	  }
	/**
	 * 功能实现,获取运算符,和数据
	 */
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource()==keyCE) {
			sum=0;
			num=0;
			find=1;
			find2=1;
			c='+';
			text.setText("0");
		}else if(e.getSource()==keyC) {
			sum=0;
			num=0;
			find=1;
			find2=1;
			c='+';
			text.setText("0");
		}else if(e.getSource()==keyDelete) {
			String  s = text.getText();
			int i=s.length();
			if(i>1) {
				s = s.substring(0, i - 1);
				text.setText(s);
			}else
				text.setText("0");
		}else if(e.getSource()==keyDivision) {
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
			String s=""+sum;
			text.setText(s);
			c='/';
		}else if(e.getSource()==keyRoot) {
			num=Math.sqrt(num);
			find=1;
		}else if(e.getSource()==keyOne) {
			if(find==1)
			num=num*10+1;
			else{
				num=num+1*find;
				find=find*0.1;
			}handleNumber("1");
		}else if(e.getSource()==keyTwo) {
			if(find==1)
				num=num*10+2;
				else{
					num=num+2*find;
					find=find*0.1;
				}handleNumber("2");
		}else if(e.getSource()==keyThere) {
			if(find==1)
				num=num*10+3;
				else{
					num=num+3*find;
					find=find*0.1;
				}handleNumber("3");
		}else if(e.getSource()==keyRide) {
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
			String s=""+sum;
			text.setText(s);
			c='*';
		}else if(e.getSource()==keySquare) {
			num=Math.pow(num, 2);
			String s=""+num;
			find=1;
			find2=1;
		}else if(e.getSource()==keyFour) {
			if(find==1)
				num=num*10+4;
				else{
					num=num+4*find;
					find=find*0.1;
				}handleNumber("4");
		}else if(e.getSource()==keyFive) {
			if(find==1)
				num=num*10+5;
				else{
					num=num+5*find;
					find=find*0.1;
				}handleNumber("5");
		}else if(e.getSource()==keySix) {
			if(find==1)
				num=num*10+6;
				else{
					num=num+6*find;
					find=find*0.1;
				}handleNumber("6");
		}else if(e.getSource()==keyReduce) {
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
			String s=""+sum;
			text.setText(s);
			c='-';
		}else if(e.getSource()==keyCubic) {
			num=Math.pow(num,3);
			find=1;
			find2=1;
		}else if(e.getSource()==keySeven) {
			if(find==1)
				num=num*10+7;
				else{
					num=num+7*find;
					find=find*0.1;
				}handleNumber("7");
		}else if(e.getSource()==keyEight) {
			if(find==1)
				num=num*10+8;
				else{
					num=num+8*find;
					find=find*0.1;
				}handleNumber("8");
		}else if(e.getSource()==keyNine) {
			if(find==1)
				num=num*10+9;
				else{
					num=num+9*find;
					find=find*0.1;
				}handleNumber("9");
		}else if(e.getSource()==keyAddition) {
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
			String s=""+sum;
			text.setText(s);
			c='+';
		}else if(e.getSource()==keyReciprocal) {
			num=1/num;
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
		}else if(e.getSource()==keyPlusOrMinus) {
			num=-num;
			String s =null;
			s=""+num;
			text.setText(s);
			sum=Calculation(sum,c,num);
			num=0;
			find=1;
			find2=1;
		}else if(e.getSource()==keyZero) {
			if(find==1)
				num=num*10;
				else{
					find=find*0.1;
				}handleNumber("0");
		}else if(e.getSource()==keySpot) {
			find=0.1;
			handleNumber(".");
		}else if(e.getSource()==keyEqual) {
			sum=Calculation(sum,c,num);
			String sc=null;
			sc=""+sum;
			text.setText(sc);
			find=1;
			find2=1;
			num=0;
			sum=0;
			c='+';
		}
				
	}
	/**
	 * 完成加减乘除运算
	 * @param sum
	 * @param c
	 * @param y
	 * @return
	 */
	public double Calculation(double sum,char c,double y) {
		switch(c) {
		case '+':
			sum+=y;
			break;
		case '-':
			sum-=y;
			break;
		case '*':
			sum*=y;
			break;
		case '/':
			sum/=y;
			break;
			default:
				break;
		}
		
		return sum;
	}
	/**
	 * 实现文本行显示内容
	 * @param x
	 */
	public void handleNumber(String x) {
		if(find2==1) {
			text.setText(x);
			find2=-1;
		}else {
			text.setText(text.getText()+x);
		}
	}
}
public class Test extends JFrame {  
  public static void main(String args[]) {
	  jiemian j = new jiemian();
	  j.jianli();
    }

}

 

你可能感兴趣的:(Java语言实现计算器)