用JAVA编写计算器程序_第1页
用JAVA编写计算器程序_第2页
用JAVA编写计算器程序_第3页
用JAVA编写计算器程序_第4页
用JAVA编写计算器程序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、用JAVA编写计算器程序(模拟Windows计算器)import java.awt.*;import java.awt.event.*;public class Calculation extends WindowAdapter implements ActionListener double dResult=0; double dNowInput=0; double dMemory; int  n=0; /记载小数位数 int  nOperation=1; / 记录运算符类型 int  nBitsNum

2、=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;

3、0;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,2

4、00);  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(n

5、ew 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);      /存放显示区&#

6、160; 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&qu

7、ot;);  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);&#

8、160; 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(th

9、is);    bDiv=new Button("/");  bSqrt=new Button("sqrt");  bMulti=new Button("*");  bMinus=new Button("-");  bPercent=new Button("%");  bPlus=new Button("+");  bReciprocal=new Button("1/x");&

10、#160; bEqual=new Button("=");  bDot=new Button(".");  bNegative=new Button("+/-");    bDiv.addActionListener(this);  bSqrt.addActionListener(this);  bMulti.addActionListener(this);  bMinus.addActionListener(this);  bPercent.addAct

11、ionListener(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); 

12、 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

13、);  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(bBac

14、kspace);   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+&quo

15、t;);    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

16、);  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(&qu

17、ot;9")<=0)     if(this.isTempNowInput)       this.dNowInput=0;    this.isTempNowInput=false;      this.nBitsNum+;    if(this.alreadyHaveDot=false)    this.dNowInput=this.dNowInput*10+Doub

18、le.parseDouble(e.getActionCommand();   else       double temp=Double.parseDouble(e.getActionCommand();    for(int i=this.n;i<0;i+)              temp*=0.1;       

19、this.dNowInput+=temp;    this.n-;      this.tf1.setText(Double.toString(this.dNowInput);    / key dot  if(this.keyAvailable && e.getActionCommand()=".")     if(this.alreadyHaveDot=false)       

20、;this.nBitsNum+;    this.alreadyHaveDot=true;    this.n=-1;        /key "+","-","*","/"  if(this.keyAvailable && e.getActionCommand()="+" | e.getActionCommand()="-" | e.getActio

21、nCommand()="*" | e.getActionCommand()="/")     if(this.alreadyClickedEqueal)       this.dNowInput=this.dResult;    this.isTempNowInput=true;      else       switch(this.nOperation)

22、         case 1: this.dResult+=this.dNowInput; break;     case 2: this.dResult-=this.dNowInput; break;     case 3: this.dResult*=this.dNowInput; break;     case 4:        

23、;   if(this.dNowInput=0)             tf1.setText("除数不能为零");       this.keyAvailable=false;            else this.dResult=this.dResult/this.dNowInp

24、ut;             if(this.keyAvailable)tf1.setText(Double.toString(this.dResult);    this.dNowInput=0;          if(e.getActionCommand()="+")       this.nOperation=1;  

25、     if(e.getActionCommand()="-")       this.nOperation=2;      if(e.getActionCommand()="*")       this.nOperation=3;      if(e.getActionCommand()="/")   &

26、#160;   this.nOperation=4;      this.nBitsNum=0;   this.alreadyClickedEqueal=false;    / key "+/-"   if(this.keyAvailable && e.getActionCommand()="+/-")     this.dNowInput=0-this.dNowInput;  

27、tf1.setText(Double.toString(this.dNowInput);       / key "C"   if(e.getActionCommand()="C")     this.nBitsNum=0;   this.dResult=0;   this.dNowInput=0;   this.alreadyHaveDot=false;   this.n=0; 

28、60; this.nOperation=1;   this.keyAvailable=true;   this.alreadyClickedEqueal=false;   tf1.setText("0.");    / key "CE"  if(e.getActionCommand()="CE")     this.nBitsNum=0;   this.dNowInput=0; 

29、0; this.alreadyHaveDot=false;   this.n=0;   this.nOperation=1;   this.keyAvailable=true;   tf1.setText("0.");      / key "sqrt"  if(this.keyAvailable && e.getActionCommand()="sqrt")     i

30、f(this.alreadyClickedEqueal)       if(this.dResult>=0)         this.dResult=Math.sqrt(this.dResult);     tf1.setText(Double.toString(this.dResult);        else     

31、60;   tf1.setText("函数输入无效");     this.keyAvailable=false;          else       if(this.dNowInput>=0)         this.dNowInput=Math.sqrt(this.dNowInput);  &

32、#160;  tf1.setText(Double.toString(this.dNowInput);        else         tf1.setText("函数输入无效");     this.keyAvailable=false;           / key "1/x"  if(

33、this.keyAvailable && e.getActionCommand()="1/x")     if(this.dNowInput=0)       tf1.setText("除数不能为零");    this.keyAvailable=false;      else       this.dNowInput=1/this.dNo

34、wInput;    tf1.setText(Double.toString(this.dNowInput);       / key "="  if(this.keyAvailable && e.getActionCommand()="=")     this.alreadyClickedEqueal=true;   switch(this.nOperation)    

35、0;  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)      

36、     tf1.setText("除数不能为零");      this.keyAvailable=false;          else this.dResult=this.dResult/this.dNowInput;          if(this.keyAvailable)tf1.setText(Double.toStrin

37、g(this.dResult);      / key "MS"  if(this.keyAvailable && e.getActionCommand()="MS")     this.dMemory=this.dNowInput;   if(this.dMemory!=0)    tf2.setText("M");    / key "MC"  i

38、f(this.keyAvailable && e.getActionCommand()="MC")     this.dMemory=0;   tf2.setText("");    / key "MR"  if(this.keyAvailable && e.getActionCommand()="MR")     this.dNowInput=this.dMemory;&#

39、160;  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"); 

40、60; 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)      

温馨提示

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

评论

0/150

提交评论