资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
用JAVA编写计算器程序(模拟Windows计算器)import java.awt.*;import java.awt.event.*;public class Calculation extends WindowAdapter implements ActionListenerdouble dResult=0;double dNowInput=0;double dMemory;int n=0; /记载小数位数int nOperation=1; / 记录运算符类型int nBitsNum=0; /记录总共输入的位数boolean alreadyHaveDot=false; /已经有小数点?boolean keyAvailable=true;boolean alreadyClickedEqueal=false; /是否按下过=?boolean isTempNowInput=false; /是否在计算出结果后直接按运算符将结果赋给了当前输入值?Frame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;Button bBackspace,bCE,bC,bMR,bMS,bMC,bM; public void display() f=new Frame(计算器); f.setSize(280,213); f.setLocation(200,200); f.setBackground(Color.LIGHT_GRAY); f.setResizable(false); f.setLayout(new BorderLayout(3,3); p1=new Panel(new GridLayout(1,3,5,5); /用于存放backspace,ce,c三键 p2=new Panel(new GridLayout(4,5,5,5); /用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整 p3=new Panel(new GridLayout(5,1,5,5); /用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整 p4=new Panel(new FlowLayout(); /用于存放p1,p2 p5=new Panel(new FlowLayout(); p6=new Panel(new FlowLayout(); p4.add(p1); p4.add(p2); tf1=new TextField(35); /存放显示区 tf1.setText(0.); tf1.setEditable(false); p5.add(tf1); f.add(p5,BorderLayout.NORTH); f.add(p4,BorderLayout.CENTER); f.add(p3,BorderLayout.WEST); b1=new Button(1); b2=new Button(2); b3=new Button(3); b4=new Button(4); b5=new Button(5); b6=new Button(6); b7=new Button(7); b8=new Button(8); b9=new Button(9); b0=new Button(0); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); b0.addActionListener(this); bDiv=new Button(/); bSqrt=new Button(sqrt); bMulti=new Button(*); bMinus=new Button(-); bPercent=new Button(%); bPlus=new Button(+); bReciprocal=new Button(1/x); bEqual=new Button(=); bDot=new Button(.); bNegative=new Button(+/-); bDiv.addActionListener(this); bSqrt.addActionListener(this); bMulti.addActionListener(this); bMinus.addActionListener(this); bPercent.addActionListener(this); bPlus.addActionListener(this); bReciprocal.addActionListener(this); bEqual.addActionListener(this); bDot.addActionListener(this); bNegative.addActionListener(this); p2.add(b7); p2.add(b8); p2.add(b9); p2.add(bDiv); p2.add(bSqrt); p2.add(b4); p2.add(b5); p2.add(b6); p2.add(bMulti); p2.add(bPercent); p2.add(b1); p2.add(b2); p2.add(b3); p2.add(bMinus); p2.add(bReciprocal); p2.add(b0); p2.add(bNegative); p2.add(bDot); p2.add(bPlus); p2.add(bEqual); bBackspace=new Button(Backspace); bCE=new Button(CE); bC=new Button(C); bBackspace.addActionListener(this); bCE.addActionListener(this); bC.addActionListener(this); p1.add(bBackspace); p1.add(bCE); p1.add(bC); tf2=new TextField(2); tf2.setEnabled(false); tf2.setBackground(Color.LIGHT_GRAY); bMC=new Button(MC); bMR=new Button(MR); bMS=new Button(MS); bM=new Button(M+); bMC.addActionListener(this); bMR.addActionListener(this); bMS.addActionListener(this); bM.addActionListener(this); p6.add(tf2); p3.add(p6); p3.add(bMC); p3.add(bMR); p3.add(bMS); p3.add(bM); f.setVisible(true); f.addWindowListener(this); public void actionPerformed(ActionEvent e) /key 0 to 9 if(this.keyAvailable & e.getActionCommand().length()=1 & e.getActionCommand().compareTo(0)=0 & e.getActionCommand().compareTo(9)=0) if(this.isTempNowInput) this.dNowInput=0; this.isTempNowInput=false; this.nBitsNum+; if(this.alreadyHaveDot=false) this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand(); else double temp=Double.parseDouble(e.getActionCommand(); for(int i=this.n;i0;i+) temp*=0.1; this.dNowInput+=temp; this.n-; this.tf1.setText(Double.toString(this.dNowInput); / key dot if(this.keyAvailable & e.getActionCommand()=.) if(this.alreadyHaveDot=false) this.nBitsNum+; this.alreadyHaveDot=true; this.n=-1; /key +,-,*,/ if(this.keyAvailable & e.getActionCommand()=+ | e.getActionCommand()=- | e.getActionCommand()=* | e.getActionCommand()=/) if(this.alreadyClickedEqueal) this.dNowInput=this.dResult; this.isTempNowInput=true; else switch(this.nO
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号