




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CNCA 017-2022基于动态地质模型与自主规划开采的综采工作面设计规范
- T/CIMA 0025-2021低压用电户表关系检查仪
- T/CIE 054-2018X射线脉冲星导航探测器地面试验系统校准规范
- T/CHES 100-2023水质高锰酸盐指数的测定自动氧化还原滴定法
- T/CGTA 06-2023小麦加工脱氧雪腐镰刀菌烯醇风险预警技术规范
- T/CECS 10281-2023建筑用基础隔振垫板
- T/CECS 10021-2019照明用LED驱动电源技术要求
- T/CCS 060-2023智能化煤矿运维组织架构管理规范
- T/CCMA 0103-2020沥青路面微波综合养护车
- T/CBMCA 023-2021铬渣陶瓷颜料
- GA/T 544-2021多道心理测试系统通用技术规范
- 腰椎间盘突出症的针刀治疗课件
- 《法理学》考试笔记与重点
- DB44!T+2419-2023全生晒柑普茶生产技术规程
- (52)-疱疹性咽峡炎小儿推拿探秘
- GMP体系文件(手册+程序)
- 柴油叉车日常点检表
- 物流成本管理-日日顺d2d物流成本分析
- 集电线路安装工程质量通病防治
- 大学生动漫创业计划书
- 压铸机维护与保养新
评论
0/150
提交评论