java练笔-计算器
来源:互联网 发布:java 9 模块maven 编辑:程序博客网 时间:2024/05/06 06:03
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; privateJButton[] CalculatorButton = new JButton[10]; privateJButton CalculatorButton0 = new JButton("0"); privateJButton CalculatorButtonPoint =new JButton("."); privateJButton CalculatorButtonEnter =new JButton("=");; privateJButton CalculatorButtonPlus = new JButton("+"); privateJButton CalculatorButtonDecrease = new JButton("-"); privateJButton CalculatorButtonMuti = new JButton("*"); privateJButton CalculatorButtonDivide = new JButton("/"); privateJButton 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(); }}