




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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=0; /记录总共输入的位数boolean alreadyHaveDot=false; /已经有小数点?b
2、oolean 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,bNe
3、gative; 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 Pane
4、l(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,p2p5=new Panel(new FlowLayout();p6=new Panel(new FlowLayout();p4.add(p1);p4.add(p2);tf1=new TextField(35); /存放显示区tf1.set
5、Text("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 Butto
6、n("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(th
7、is); 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 Bu
8、tton("+");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.add
9、ActionListener(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(b
10、Percent);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.addAct
11、ionListener(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.addAct
12、ionListener(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 9if(this.keyAvailable &&
13、 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*1
14、0+Double.parseDouble(e.getActionCommand(); elsedouble temp=Double.parseDouble(e.getActionCommand();for(int i=this.n;i<0;i+)temp*=0.1;this.dNowInput+=temp;this.n-;this.tf1.setText(Double.toString(this.dNowInput);/ key dotif(this.keyAvailable && e.getActionCommand()=".")if(this.al
15、readyHaveDot=false)this.nBitsNum+;this.alreadyHaveDot=true;this.n=-1;/key "+","-","*","/"if(this.keyAvailable && e.getActionCommand()="+" | e.getActionCommand()="-" | e.getActionCommand()="*" | e.getActionCommand()="/
16、")if(this.alreadyClickedEqueal)this.dNowInput=this.dResult;this.isTempNowInput=true;elseswitch(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("除数不能为零&
17、quot;);this.keyAvailable=false;else this.dResult=this.dResult/this.dNowInput;if(this.keyAvailable)tf1.setText(Double.toString(this.dResult); this.dNowInput=0;if(e.getActionCommand()="+")this.nOperation=1;if(e.getActionCommand()="-")this.nOperation=2;if(e.getActionCommand()="
18、*")this.nOperation=3;if(e.getActionCommand()="/")this.nOperation=4;this.nBitsNum=0;this.alreadyClickedEqueal=false;/ key "+/-"if(this.keyAvailable && e.getActionCommand()="+/-") this.dNowInput=0-this.dNowInput;tf1.setText(Double.toString(this.dNowInput); /
19、key "C"if(e.getActionCommand()="C")this.nBitsNum=0;this.dResult=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;this.alreadyClickedEqueal=false;tf1.setText("0.");/ key "CE"if(e.getActionCommand()="CE")th
20、is.nBitsNum=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;tf1.setText("0.");/ key "sqrt"if(this.keyAvailable && e.getActionCommand()="sqrt") if(this.alreadyClickedEqueal)if(this.dResult>=0)this.dResult=Math.sqr
21、t(this.dResult);tf1.setText(Double.toString(this.dResult);elsetf1.setText("函数输入无效");this.keyAvailable=false;elseif(this.dNowInput>=0)this.dNowInput=Math.sqrt(this.dNowInput); tf1.setText(Double.toString(this.dNowInput); elsetf1.setText("函数输入无效");this.keyAvailable=false;/ key &
22、quot;1/x"if(this.keyAvailable && e.getActionCommand()="1/x") if(this.dNowInput=0)tf1.setText("除数不能为零");this.keyAvailable=false;elsethis.dNowInput=1/this.dNowInput;tf1.setText(Double.toString(this.dNowInput); / key "="if(this.keyAvailable && e.getAct
23、ionCommand()="=") 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;
24、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
25、.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("&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全意识培训考试题及答案
- 草坪园艺技术中常见问题的解决方法
- 2025年物流行业高级经理的面试模拟题及答案
- 初中学科竞赛颁奖词模板
- 2025年机械安全员安全培训教材题库
- 2025年品质管理工程师职业资格考试试题及答案解析
- 2025年教师资格考试试题及答案解析
- 课件中文字的加强
- 2025年计算机信息系统师资格认证考试试题及答案解析
- 2025年环境保护设备工程师资格考试试题及答案解析
- 水泥路施工安全知识培训课件
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年福建省厦门市【辅警协警】笔试真题(含答案)
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- 2025年金融消费者权益保护考试题与答案
- 中学2025年秋季第一学期开学工作方案
- 《跨越百年的美丽》课件 中职语文上册
- GB 11122-2025柴油机油
- 2025年河南开封产城融合投资集团有限公司招聘考试笔试试题(含答案)
- 大便常规检查
评论
0/150
提交评论