用JAVA编写计算器程序(模拟Windows计算器).doc_第1页
用JAVA编写计算器程序(模拟Windows计算器).doc_第2页
用JAVA编写计算器程序(模拟Windows计算器).doc_第3页
用JAVA编写计算器程序(模拟Windows计算器).doc_第4页
用JAVA编写计算器程序(模拟Windows计算器).doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用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;i=0) this.dResult=Math.sqrt(this.dResult); tf1.setText(Double.toString(this.dResult); else tf1.setText(函数输入无效); this.keyAvailable=false; else if(this.dNowInput=0) this.dNowInput=Math.sqrt(this.dNowInput); tf1.setText(Double.toString(this.dNowInput); else tf1.setText(函数输入无效); this.keyAvailable=false; / key 1/x if(this.keyAvailable & e.getActionCommand()=1/x) if(this.dNowInput=0) tf1.setText(除数不能为零); this.keyAvailable=false; else this.dNowInput=1/this.dNowInput; tf1.setText(Double.toString(this.dNowInput); / key = if(this.keyAvailable & e.getActionCommand()=) this.alreadyClickedEqueal=true; switch(this.nOperation) case 1: this.dResult+=this.dNowInput; break; case 2: this.dResult-=this.dNowInput; break; case 3: this.dResult*=this.dNowInput; break; case 4: if(this.dNowInput=0) tf1.setText(除数不能为零); this.keyAvailable=false; else this.dResult=this.dResult/this.dNowInput; if(this.keyAvailable)tf1.setText(Double.toString(this.dResult); / key MS if(this.keyAvailable & e.getActionCommand()=MS) this.dMemory=this.dNowInput; if(this.dMemory!=0) tf2.setText(M); / key MC if(this.keyAvailable & e.getActionCommand()=MC) this.dMemory=0; tf2.setText(); / key MR if(this.keyAvailable & e.getActionCommand()=MR) this.dNowInput=this.dMemory; tf1.setText(Double.toString(this.dNowInput); / key M+ if(this.keyAvailable & e.getActionCommand()=M+) this.dMemory+=this.dNowInput; if(this.dMemory!=0) tf2.setText(M); else tf2.setText(); / key % if(this.keyAvailable & e.getActionCommand()=%) this.dNowInput=(this.dResult*this.dNowInput)/100; tf1.setText(Double.toString(this.dNowInput); / key Backspace if(this.keyAvailable & e.getActionCommand()=Backspace) if(!this.alreadyClickedEqueal) if(this.dNowInput!=0) if(this.alreadyHaveDot) if(this.n=-1) this.alreadyHaveDot=false; this.n=0; else String str,str1; str=tf1.getText(); str1=str.substring(0,this.nBitsNum-1); this.nBitsNum-; this.n+; this.dNowInput=Double.parseDouble(str1); tf1.setText(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论