java练笔-计算器

package calculator;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Calculator{
	double shuju[] =new double[99];//寄存数据信息
	double daan;  //答案显示数据
	double zhongjianshuju[]=new double[99]; //寄存中间运算数据
	private JFrame CalculatorFrame = null;
    private	JButton[] CalculatorButton = new JButton[10];
    private	JButton CalculatorButton0 = new JButton("0");
    private	JButton CalculatorButtonPoint =new JButton(".");
    private	JButton CalculatorButtonEnter =new JButton("=");;
    private	JButton CalculatorButtonPlus =  new JButton("+");
    private	JButton CalculatorButtonDecrease = new JButton("-");
    private	JButton CalculatorButtonMuti = new JButton("*");
    private	JButton CalculatorButtonDivide = new JButton("/");
    private	JButton CalculatorButtonBackspace =new JButton("←");
    JTextField SJ =new JTextField(10);//输入数据显示器
    JTextField DA =new JTextField(15);//答案显示器
    String zifushuju;
    public  Calculator()
    {
    CalculatorFrame = new JFrame("计算器");//创建框架
	Toolkit tk = Toolkit.getDefaultToolkit();//获取屏幕高度,确定窗口大小
	Dimension screenSize = tk.getScreenSize();
	int screenHeight = screenSize.height; 
	int screenWidth = screenSize.width;
	CalculatorFrame.setSize(screenWidth/6,screenHeight/3);
	CalculatorFrame.setResizable(false); 
	CalculatorFrame.setLocationRelativeTo(null);
	CalculatorFrame.setVisible(true);
	CalculatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	Container WZ = CalculatorFrame.getContentPane();	//子容器控制
	WZ.setLayout(new BoxLayout(WZ,BoxLayout.Y_AXIS));
	JPanel  QY[] = new JPanel[7];
	int i;
	for(i=0;i<6;i++){//创建子容器(区域)表示各种区,运算区,神马的
    	QY[i]=new JPanel();
    	CalculatorFrame.add(QY[i]);
    }
    for(i=1;i<10;i++){
    	CalculatorButton[i] = new JButton(""+i);
    	CalculatorButton[i].addActionListener(new JT());
    	if(i>0&&i<=3){
    	    QY[4].add(CalculatorButton[i]);
    	}
    	if(i>3&&i<7){  
        	QY[3].add(CalculatorButton[i]);	
    	}
    	if(i>6&&i<10){
        	QY[2].add(CalculatorButton[i]);	
    	}
    	}
    CalculatorButtonPlus.addActionListener(new JT());
    CalculatorButton0.addActionListener(new JT());
    CalculatorButtonDecrease.addActionListener(new JT());
    CalculatorButtonMuti.addActionListener(new JT());
    CalculatorButtonDivide.addActionListener(new JT());
    CalculatorButtonEnter.addActionListener(new JT());
    CalculatorButtonBackspace.addActionListener(new JT());
    CalculatorButtonPoint.addActionListener(new JT());
    SJ.setHorizontalAlignment(JTextField.RIGHT); 
    SJ.setEnabled(false);
    DA.setEnabled(false);
    DA.setHorizontalAlignment(JTextField.RIGHT);
    QY[0].add(DA);
    QY[1].add(SJ);
    QY[1].add(CalculatorButtonBackspace);
    QY[2].add(CalculatorButtonDivide);
    QY[3].add(CalculatorButtonMuti);
    QY[4].add(CalculatorButtonDecrease);
    QY[5].add(CalculatorButtonPoint);
    QY[5].add(CalculatorButton0);
    QY[5].add(CalculatorButtonEnter);
    QY[5].add(CalculatorButtonPlus);      
    }
    public class JT implements ActionListener //监听(JT)按钮
    { 		
     public void actionPerformed(ActionEvent XY)//对每个每个按钮做出响应(XY)
     { 
     if(XY.getSource()==CalculatorButton0)
      press0();
     else if(XY.getSource()==CalculatorButton[1])
      press1();
     else if(XY.getSource()==CalculatorButton[2])
      press2();
     else if(XY.getSource()==CalculatorButton[3])
      press3();
     else if(XY.getSource()==CalculatorButton[4])
      press4();
     else if(XY.getSource()==CalculatorButton[5])
      press5();
     else if(XY.getSource()==CalculatorButton[6])
      press6();
     else if(XY.getSource()==CalculatorButton[7])
      press7();
     else if(XY.getSource()==CalculatorButton[8])
      press8();
     else if(XY.getSource()==CalculatorButton[9])
      press9();
     else if(XY.getSource()==CalculatorButtonPoint)
      pressPoint();
     else if(XY.getSource()==CalculatorButtonEnter)
      pressEnter();
     else if(XY.getSource()==CalculatorButtonPlus)
      pressPlus();
     else if(XY.getSource()==CalculatorButtonDecrease)
      pressDecrease();
     else if(XY.getSource()==CalculatorButtonMuti)
      pressMuti();
     else if(XY.getSource()==CalculatorButtonDivide)
      pressDivide();
     else if(XY.getSource()==CalculatorButtonBackspace)
      pressBackspace();
     }
    }
	int i=0;
	int a=0;
	int b=0;
	public void press0(){
    	if(shuju[i]!=0&&b==0){
    		shuju[i]=shuju[i]*10;
    	}
    	if(shuju[i]==0&&b==0){
    		shuju[i]=0;
    	}
    	if(b==1){    		
    	zifushuju+="0";
    	}
    	SJ.setText(""+shuju[i]); 
    }
    public void press1(){
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+1;
        	}
        	if(shuju[i]==0){
        		shuju[i]=1;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="1"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press2(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+2;
        	}
        	if(shuju[i]==0){
        		shuju[i]=2;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="2"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press3(){
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+3;
        	}
        	if(shuju[i]==0){
        		shuju[i]=3;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="3"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press4(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+4;
        	}
        	if(shuju[i]==0){
        		shuju[i]=4;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="4"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press5(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+5;
        	}
        	if(shuju[i]==0){
        		shuju[i]=5;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="5"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press6(){	 
    	if(b==0){
    	   if(shuju[i]!=0){
    		shuju[i]=shuju[i]*10+6;
    	   }
    	   if(shuju[i]==0){
    		shuju[i]=6;
    	    }
    	   SJ.setText(""+shuju[i]); 
    	   }
    	if(b==1){ 
    	   zifushuju+="6"; 
    	   SJ.setText(zifushuju);
    	}    	
    }
    public void press7(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+7;
        	}
        	if(shuju[i]==0){
        		shuju[i]=7;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="7"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press8(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+8;
        	}
        	if(shuju[i]==0){
        		shuju[i]=8;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="8"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void press9(){	
    	if(b==0){
        	if(shuju[i]!=0){
        		shuju[i]=shuju[i]*10+9;
        	}
        	if(shuju[i]==0){
        		shuju[i]=9;
        	}
        	SJ.setText(""+shuju[i]); 
        	}
        if(b==1){ 
        	zifushuju+="9"; 
        	SJ.setText(zifushuju);
        	}    	
        }
    public void pressPoint(){
    	zifushuju = String.valueOf(shuju[i]);  
    	zifushuju = zifushuju.substring(0,zifushuju.length()-1);
    	b=1;
    	SJ.setText(zifushuju); 
    }
    public void pressPlus(){
    	if(b==1){shuju[i] = Double.parseDouble(zifushuju);} 	
        if(i==0){zhongjianshuju[i]=shuju[i];}
        else { switch(a){
        case 0:{break;}
        case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
        case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
        case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
        case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
        }}
    	a=1;
    	b=0;
    	SJ.setText("+");
    	i++;
    }
    public void pressDecrease(){
    	if(b==1){shuju[i] = Double.parseDouble(zifushuju);} 	
        if(i==0){zhongjianshuju[i]=shuju[i];}
        else { switch(a){
        case 0:{break;}
        case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
        case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
        case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
        case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
        }}
    	a=2;
    	b=0;
    	SJ.setText("-");
    	i++;
    }
    public void pressMuti(){
    	if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
        if(i==0){zhongjianshuju[i]=shuju[i];}
        else {switch(a){
        case 0:{break;}
        case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
        case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
        case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
        case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
        }}
    	a=3;
    	b=0;
    	SJ.setText("*");
    	i++;
    }   
    public void pressDivide(){ 
    	if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
    	if(i==0){zhongjianshuju[i]=shuju[i];}
    	else {switch(a){
    	case 0:{break;}
    	case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
    	case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
    	case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
    	case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
    	}}
    	a=4;
    	b=0;
    	SJ.setText("/");
    	i++;
    } 
    public void pressEnter(){
    	if(b==0){
    	if(i==0){daan=shuju[i];}
    	else{
    		switch(a){
        	case 0:{break;}
        	case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
        	case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
        	case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
        	case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
        	}
    	daan=zhongjianshuju[i];}
    	}
    	if(b==1){
    	shuju[i] = Double.parseDouble(zifushuju);	
    	if(i==0){daan=shuju[i];}
    	else{
    		switch(a){
        	case 0:{break;}
        	case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
        	case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
        	case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
        	case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
        	}
    	daan=zhongjianshuju[i];}
    	}
        DA.setText(""+daan);
        shuju=new double[99];	
        zhongjianshuju=new double[99];
        shuju[0]=0;
        i=0;
        b=0;
    } 
    public void pressBackspace(){
    	shuju[i]=0;
    	SJ.setText(""+shuju[i]);	
    }
public static void main(String[] args) {
	new Calculator();  
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值