还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
湖南工业大学课程设计资料袋学院(系、部)2012~2013学年第2学期课程名称Java程序设计指导教师职称学生姓名专业班级学号题目Java计算器成绩起止日期2013年06月24日~2013年06月30日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书13源程序(电子文档)1456湖南工业大学课程设计任务书2012—2013学年第2学期学院(系、部)专业班级课程名称Java程序设计设计题目Java计算器完成期限自2013年06月24日至2013年06月30日共1周内容及任务
一、设计的任务及主要技术参数
1.设计的计算器可以完成加法、减法、乘法、除法的简单运算
2.实现一些简单的扩展运算,如将数据取正负号、倒数、退格、清零,开根号、、清空等功能
3.添加小数点功能,用以实现浮点型数据的计算
4.使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算
二、设计任务1系统分析包括可行性分析、用户需求分析等及功能分析;2系统总体功能设计;3)系统详细功能设计,采用了数据库的同学,给出数据库设计;4程序设计及调试;5设计说明书的书写
三、设计工作量可以完成一个采用java技术的简单计算器,每人至少要投入1周的时间来完成该系统的分析与设计,撰写出项目开发各个阶段需要的文档,每人独立完成自己的系统进度安排起止日期工作内容2013-06-24选题,完成项目计划文档2013-06-25完成可行性分析文档、需求分析文档和完成设计文档2013-06-26~2013-06-28编码系统测试、客户提交文档2013-06-29完成课程设计说明书2013-06-30答辩,确定等级,交文档材料含电子文档、源程序主要参考资料
[1]Y.DanielLiang著.万波译.Java语言程序设计(基础篇)(第6版)[M]北京:机械工业出版社2009
[2]韩万江姜立新.软件项目管理案例教程第2版[M].北京:机械工业出版社
2010.
[3]丁振凡.Java语言实用教程第2版[M].北京邮电大学出版社.
2008.1
[4]丁振凡.Java语言实用教程实验指导第2版[M].北京邮电大学出版社.
2008.1
[5]杨树林等.Java语言最新实用案例教程第2版[M].清华大学出版社.
2010.7
[6]朱福喜.《Java语言程序设计》(第二版).科学出版社
[7]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[8]Deitel.《Java大学基础教程》(第六版).电子工业出版社
[9]MaryCampione.《Java语言导学》(第四版).机械工业出版社
[10]Y.DanielLiang.《Java语言程序设计基础篇》(第六版).机械工业出版社
[11]KathySierra.《HeadFirstJava》(第二版).东南大学出版社指导教师(签字)年月日系(教研室)主任(签字)年月日Java程序设计课程设计设计说明书Java计算器起止日期2013年06月24日至2013年06月30日学生姓名班级学号成绩指导教师签字计算机与通信学院2013年6月30日目录一.设计目的---------------------------------------------------2二.设计任务---------------------------------------------------3三.设计内容---------------------------------------------------3一)引言---------------------------------------------------3二)可行性研究---------------------------------------------3三)需求分析-----------------------------------------------4四)概要模型-----------------------------------------------5五)详细设计------------------------------------------------5
四、测试与评价-------------------------------------------------9
五、结论------------------------------------------------------12
六、致谢------------------------------------------------------12附录----------------------------------------------------------13Java计算器的设计与实现摘要本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求倒数通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力前言近年来随着计算机和网络在社会领域的发展,java的应用正在不断地走向深入, Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式特别是Java企业应用编程接口为企业计算及电子商务应用系统提供了有关技术和丰富的类库开发背景人类已进入21世纪,科学技术突飞猛进经济知识和信息产业初见端倪特别是信息技术和网络技术的讯速发展和广泛应用对社会的政治经济军事文化等领域产生越来越深刻的影响也正在改变人们的工作生活学习交流方式信息的获取处理交流和应用能力已经成为人们最重要的能力之一随着互联网的发展,现在互联网慢慢的进入大数据库时代,计算对于当今社会来说是不可或缺的,特别是大型的计算因此我们必须要对计算机的计算作出一些突飞猛进的发展,才能够迎接接下来大数据库时代的挑战对于我们大学生尤其是我们学计算机的人而言,更应该认清这一点,所以,我们现在要从基础做起,先做小型的计算器,积累经验,打好基础,为以后迎接更大的挑战做准备,所以做了这个简单的Java计算器
1、设计目的本次设计是通过java编程技术来设计一个图形界面的计算器应用程序,完成简单的算术运算,该计算器可以实现加法、减法、乘法、除法的简单运算,也可以实现一些简单的扩展运算,开展这次课题设计的主要目的在于检测学生对java应用的熟练程度,发现问题并及时改正和提高,同时扩展学生对java知识的进一步了解和认识,强化学生的编程能力,为他们将来在新的旅途中能更好的发挥自身的才能!
2、设计任务
1、任务计一个图形界面的计算器应用程序,完成简单的算术运算通过对计算器的编辑来检测和提升自己的java编程能力,并最终完成课程设计报告!
2、要求1设计的计算器可以完成加法、减法、乘法、除法、开平方的简单运算2实现一些简单的扩展运算,如正负号、倒数、退格、清零等功能3添加小数点功能,用以实现浮点型数据的计算4使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算
3、设计内容
1、引言随着互联网的发展,大数据时代的来临和云计算的产生于发展,计算现在已成为一个很具研究性的方向其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用现在我国的云计算还刚刚起步,这样的速度发展已经快要赶不上大数据时代的来临了现在,我们很多的计算仍然只停留在简单的计算机计算,这样花费了很多的时间在这个飞速发展的时代,这种简单的计算必然会被正在高速发展的云计算所取代根据现实状况,该计算器只要求进行简单的四则运算(加、减、乘、除)、求倒数、开平方的运算,以及实现正负号、退格、清零等简单的拓展运算
2、可行性分析所谓可行性分析就是用最小的代价在尽可能短的时间内确定问题是否能够解决这步工作的主要是要进行一次大大压缩简化了计算器的分析和设计的过程,也就是在较高层次上以比较抽象的方式进行计算器分析和设计的过程可行性研究的最根本任务是对以后的行动方针提出建议,以避免时间、资源、人力和金钱的浪费,推荐一个较好的解决方案,并且为工程制定一个初步的计划
(1)技术可行性该计算器具有简单四则运算(加、减、乘、除)、求倒数、开平方等功能,以及实现正负号、退格、清零等简单的拓展运算就目前的开发技术来说,该计算器需要的功能和目标完全能够达到将默认布局管理器清零,然后自定义网格布局以及按钮的设置,调用系统的函数,在规定的时间内开发工作基本能够实现需求分析中所要求的功能这是一个简单的计算器,从投入的人力,财力与物理来讲是非常小的,只要一台电脑,这个计算器就可以用了该计算器设计清晰,很简洁明了,操作十分简单,完全能够进行一些简单的计算,能给我们的生活带来很大的方便,因此在操作方面具有可行性
(2)社会上可行性分析该项目为用户自行开发,在法律方面不会存在侵犯专利权、侵犯版权等问题,完全按照合同规定的责任履行
(3)工具可行性软件方面信息时代对于软件的应用已不是人们的难题,人们在日常办公中用的计算机操作的系统等都属于软件部分硬件方面计算机普及到今天,人们对于它的拥有已不少见,它的硬件设备完全能够满足人们的需求,而价格也能被人们所接受
(4)结论技术、经济、操作都有可行性,可以进行开发
3、需求分析现在在我国广大的落后地区,计算方式还只是停留在纸上,甚至是算盘上,这样的机制已经不能适应时代的发展,因为它浪费了很多的时间,而且很容易出错,在信息时代,这种传统的计算方法必然被计算器所取代通过调查,很多人发现计算器比原来的笔纸计算和算盘计算要方便快速很多,而且可以很大程度的降低出错的概率,所以很多人非常喜欢并接受计算器
(1)功能需求分析计算器主要提供用户计算简单的算术运算,用户可以根据自己所需要进行的计算选择计算方式,通过点击按钮就可以实现,要想得到最后计算的结果只需点击“=”,就可以马上可以得出最后的运算结果本计算器有以下几个功能名称Java计算器功能a、加减乘除四则运算b、正负号、倒数、退格、清零等拓展功能c、添加小数点功能,用以实现浮点型数据的计算
(2)性能需求分析时间特性要求在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速
(3)系统技术以及运行环境的需求分析该计算器是用Java语言编写,运用网格布局实现用户对计算器的界面展示,通过按钮的控制数字和符号的改变用户只需要通过简单的操作,就可以了解本计算器的基本工作原理,用户只需要用鼠标点击按钮,就可以进行自己所需的计算,并可得出计算结果
4、概要设计
(1)概念模型介绍Java计算器的流程首先运行程序,打开计算器,然后用户才可自由的进行使用计算,然后将信息保存到字符串中(程序流程如下图所示)
(2)系统功能结构设计该计算器只有一个模块只有一个简单的计算界面根据需求分析阶段得到的功能需求,用户通过输入数据后,就可进行计算
5、详细设计该计算器是用Java语言编写,是基于普通用户的计算器,在该计算器中两大部分一是主界面;而是构造监听器
(1)主界面用户运行程序后进入该界面,还界面由一些按钮和一个显示屏组成,通过点击各个按钮即可实现相应的功能包括四则运算、拓展运算等(主界面)
(2)构造监听器当用户点击按钮时,接听器会接收到相应的消息,做出相应的响应处理构造监听器的代码如下classBtimplementsActionListener{publicvoidactionPerformedActionEvente2{try{ife
2.getSource==hehe1{lyj.setText0;//把显示屏清零lyjstr.setLength0;//清空字符串缓冲区以准备接收新的输入运算数}elseife
2.getSource==hehe2{lyj.setText0;//把显示屏清零lyjstr.setLength0;}elseife
2.getSource==hehe23{//单击+/-选择输入的运算数是正数还是负数xlyj=Double.parseDoublelyj.getText.trim;lyj.setText+-xlyj;}elseife
2.getSource==hehe25{//单击加号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;//清空缓冲区以便接收新的另一个运算数ylyj=0d;zlyj=0;}elseife
2.getSource==hehe20{//单击减号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=1;}elseife
2.getSource==hehe15{//单击乘号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=2;}elseife
2.getSource==hehe10{//单击除号按钮获得xlyj的值和zlyj的值并空ylyj的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=3;}elseife
2.getSource==hehe26{//单击等号按钮输出计算结果lyjstr.setLength0;switchzlyj{case0:lyj.setText+xlyj+ylyj;break;case1:lyj.setText+xlyj-ylyj;break;case2:lyj.setText+xlyj*ylyj;break;case3:lyj.setText+xlyj/ylyj;break;}}elseife
2.getSource==hehe24{//单击.按钮输入小数iflyj.getText.trim.indexOf.!=-1//判断字符串中是否已经包含了小数点{}else{//如果没数点有小iflyj.getText.trim.equals0{//如果初时显示为0lyjstr.setLength0;lyj.setTextlyjstr.append0+e
2.getActionCommand.toString;}elseiflyj.getText.trim.equals{//如果初时显示为空则不做任何操作}else{lyj.setTextlyjstr.appende
2.getActionCommand.toString;}}ylyj=0d;}elseife
2.getSource==hehe11{//求平方根xlyj=Double.parseDoublelyj.getText.trim;lyj.setText数字格式异常;ifxlyj0lyj.setText负数没有平方根;elselyj.setText+Math.sqrtxlyj;lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe16{//单击了%按钮xlyj=Double.parseDoublelyj.getText.trim;lyj.setText+
0.01*xlyj;lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe21{//单击了1/X按钮xlyj=Double.parseDoublelyj.getText.trim;ifxlyj==0{lyj.setText除数不能为零;}else{lyj.setText+1/xlyj;}lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe3{lyjm=0d;lyjstr.setLength0;}elseife
2.getSource==hehe5{lyjm=Double.parseDoublelyj.getText.trim;lyj.setText0;lyjstr.setLength0;}elseife
2.getSource==hehe6//“结果并加”是将显示的数字与已经存储的数据相加,要查看新的数字单击“清除记忆”{lyjm=lyjm+Double.parseDoublelyj.getText.trim;}else//选择的是其他的按钮{ife
2.getSource==hehe22//如果选择的是0这个数字键{iflyj.getText.trim.equals0//如果显示屏显示的为零不做操作{}else{lyj.setTextlyjstr.appende
2.getActionCommand.toString;ylyj=Double.parseDoublelyj.getText.trim;}}elseife
2.getSource==hehe0//选择的是“退格”按钮{if!lyj.getText.trim.equals0//如果显示屏显示的不是零{iflyjstr.length!=1{lyj.setTextlyjstr.deletelyjstr.length-1lyjstr.length.toString;//可能抛出字符串越界异常}else{lyj.setText0;lyjstr.setLength0;}}ylyj=Double.parseDoublelyj.getText.trim;}else//其他的数字键{lyj.setTextlyjstr.appende
2.getActionCommand.toString;ylyj=Double.parseDoublelyj.getText.trim;}}}catchNumberFormatExceptione{lyj.setText数字格式异常;e.printStackTrace;}catchStringIndexOutOfBoundsExceptione{lyj.setText字符串索引越界;}}}
4、测试与评价
1、简单的运算(以加法为例123+456)评价计算的结果为
579.0,为双精度型,计算的结果被设置在文本框的最右端,该计算器的一个特点是可直接在文本框中输入数据以及进行更改
2、倒数的运算(以123为例)评价输出的结果如图所示,倒数功能实现,计算时,不仅是结果,输入的数据同样可以先实现倒数功能后再进行相应的计算,没有影响!
3、退格的运算(以123为例)评价输出的结果如图所示,本计算器退格键有一个特点是,就算是是计算后得出的结果也能实现退格,缺点是不能很好的处理小数点的问题,因为小数点也是字符串的一部分.
4、正负号的运算(以123为例)评价输出的结果如图所示,正负号添加能够很好的实现,但可以进行一些改进,比如在计算过程当中直接点击负号运算符输入负数进行计算!
5、平方根的运算(以123为例)评价输出的结果如图所示,开平方能够正常的运行但是可以设置保留几位有效数字,一般生活当中用不到这么多位小数
6.总体分析该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能
5、结论本次课程设计到此算是告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java的认识与了解在做本项目是时候,会遇到很多小问题,比如说,在整个运算过程中要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类型来很好的控制运算符的应用!此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐,了解更多有关java的知识,对java有更深一步的了解,我会一步一步的走下去!
6、致谢这次课程设计能够顺利的完成,要感谢老师的教导和同学的无私的帮助首先是周浩老师,为我的设计改进提供了很多宝贵的意见,还有和同学一起讨论帮我解决了几个错误,老师上实验课时讲得详细并严格要求我们,为我们的课程设计起了促进作用在此对老师和给予我帮助的同学表示最诚挚的感谢!附录源代码清单importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalculotorextendsFrame{//声明三个面板的布局GridLayoutlyjl1lyj12lyj13;Panelhaha0haha1haha2haha3;JTextFieldlyj;Buttonhehe0hehe1hehe2hehe3hehe4hehe5hehe6hehe7hehe8hehe9hehe10hehe11hehe12hehe13hehe14hehe15hehe16hehe17hehe18hehe19hehe20hehe21hehe22hehe23hehe24hehe25hehe26;StringBufferlyjstr;//显示屏所显示的字符串doublexlyjylyj;//l和y都是运算数intzlyj;//j表示单击了那一个运算符.0表示+1表示-2表示*3表示/staticdoublelyjm;//记忆的数字publicCalculotor{super计算器——李远吉;lyjl1=newGridLayout14100;//实例化三个面板的布局lyj12=newGridLayout41015;lyj13=newGridLayout451015;lyj=newJTextField27;//显示屏lyj.setHorizontalAlignmentJTextField.RIGHT;lyj.setEnabledfalse;lyj.setText0;lyj.setFontnewFont宋体Font.BOLD20;lyj.setBackgroundColor.black;//实例化所有按钮、设置其前景色并注册监听器hehe0=newButton退格;hehe
0.setForegroundColor.black;hehe
0.addActionListenernewBt;hehe1=newButton清除错误;hehe
1.setForegroundColor.black;hehe
1.addActionListenernewBt;hehe2=newButton全部清除;hehe
2.setForegroundColor.black;hehe
2.addActionListenernewBt;hehe3=newButton清除存储;hehe
3.setForegroundColor.black;hehe
3.addActionListenernewBt;hehe4=newButton清除记忆;hehe
4.setForegroundColor.black;hehe
4.addActionListenernewBt;hehe5=newButton开始记忆;hehe
5.setForegroundColor.black;hehe
5.addActionListenernewBt;hehe6=newButton结果并加;hehe
6.setForegroundColor.black;hehe
6.addActionListenernewBt;hehe7=newButton7;hehe
7.setForegroundColor.magenta;hehe
7.addActionListenernewBt;hehe8=newButton8;hehe
8.setForegroundColor.magenta;hehe
8.addActionListenernewBt;hehe9=newButton9;hehe
9.setForegroundColor.magenta;hehe
9.addActionListenernewBt;hehe10=newButton/;hehe
10.setForegroundColor.black;hehe
10.addActionListenernewBt;hehe11=newButtonsqrt;hehe
11.setForegroundColor.black;hehe
11.addActionListenernewBt;hehe12=newButton4;hehe
12.setForegroundColor.magenta;hehe
12.addActionListenernewBt;hehe13=newButton5;hehe
13.setForegroundColor.magenta;hehe
13.addActionListenernewBt;hehe14=newButton6;hehe
14.setForegroundColor.magenta;hehe
14.addActionListenernewBt;hehe15=newButton*;hehe
15.setForegroundColor.black;hehe
15.addActionListenernewBt;hehe16=newButton%;hehe
16.setForegroundColor.black;hehe
16.addActionListenernewBt;hehe17=newButton1;hehe
17.setForegroundColor.magenta;hehe
17.addActionListenernewBt;hehe18=newButton2;hehe
18.setForegroundColor.magenta;hehe
18.addActionListenernewBt;hehe19=newButton3;hehe
19.setForegroundColor.magenta;hehe
19.addActionListenernewBt;hehe20=newButton-;hehe
20.setForegroundColor.black;hehe
20.addActionListenernewBt;hehe21=newButton1/X;hehe
21.setForegroundColor.black;hehe
21.addActionListenernewBt;hehe22=newButton0;hehe
22.setForegroundColor.black;hehe
22.addActionListenernewBt;hehe23=newButton+/-;hehe
23.setForegroundColor.magenta;hehe
23.addActionListenernewBt;hehe24=newButton.;hehe
24.setForegroundColor.magenta;hehe
24.addActionListenernewBt;hehe25=newButton+;hehe
25.setForegroundColor.black;hehe
25.addActionListenernewBt;hehe26=newButton=;hehe
26.setForegroundColor.black;hehe
26.addActionListenernewBt;//实例化四个面板haha0=newPanel;haha1=newPanel;haha2=newPanel;haha3=newPanel;//创建一个空字符串缓冲区lyjstr=newStringBuffer;//添加面板haha0中的组件和设置其在框架中的位置和大小haha
0.addlyj;haha
0.setBounds102530040;//添加面板haha1中的组件和设置其在框架中的位置和大小haha
1.setLayoutlyjl1;haha
1.addhehe0;haha
1.addhehe1;haha
1.addhehe2;haha
1.setBounds106530025;//添加面板haha2中的组件并设置其的框架中的位置和大小haha
2.setLayoutlyj12;haha
2.addhehe3;haha
2.addhehe4;haha
2.addhehe5;haha
2.addhehe6;haha
2.setBounds1011060150;//添加面板haha3中的组件并设置其在框架中的位置和大小haha
3.setLayoutlyj13;//设置haha3的布局haha
3.addhehe7;haha
3.addhehe8;haha
3.addhehe9;haha
3.addhehe10;haha
3.addhehe11;haha
3.addhehe12;haha
3.addhehe13;haha
3.addhehe14;haha
3.addhehe15;haha
3.addhehe16;haha
3.addhehe17;haha
3.addhehe18;haha
3.addhehe19;haha
3.addhehe20;haha
3.addhehe21;haha
3.addhehe22;haha
3.addhehe23;haha
3.addhehe24;haha
3.addhehe25;haha
3.addhehe26;haha
3.setBounds80110220150;//设置框架中的布局为空布局并添加4个面板setLayoutnull;addhaha0;addhaha1;addhaha2;addhaha3;setResizablefalse;//禁止调整框架的大小//匿名类关闭窗口addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente1{System.exit0;}};setBackgroundColor.white;setBounds100100320280;setVisibletrue;}//构造监听器classBtimplementsActionListener{publicvoidactionPerformedActionEvente2{try{ife
2.getSource==hehe1{lyj.setText0;//把显示屏清零lyjstr.setLength0;//清空字符串缓冲区以准备接收新的输入运算数}elseife
2.getSource==hehe2{lyj.setText0;//把显示屏清零lyjstr.setLength0;}elseife
2.getSource==hehe23{//单击+/-选择输入的运算数是正数还是负数xlyj=Double.parseDoublelyj.getText.trim;lyj.setText+-xlyj;}elseife
2.getSource==hehe25{//单击加号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;//清空缓冲区以便接收新的另一个运算数ylyj=0d;zlyj=0;}elseife
2.getSource==hehe20{//单击减号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=1;}elseife
2.getSource==hehe15{//单击乘号按钮获得xlyj的值和zlyj的值并清空y的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=2;}elseife
2.getSource==hehe10{//单击除号按钮获得xlyj的值和zlyj的值并空ylyj的值xlyj=Double.parseDoublelyj.getText.trim;lyjstr.setLength0;ylyj=0d;zlyj=3;}elseife
2.getSource==hehe26{//单击等号按钮输出计算结果lyjstr.setLength0;switchzlyj{case0:lyj.setText+xlyj+ylyj;break;case1:lyj.setText+xlyj-ylyj;break;case2:lyj.setText+xlyj*ylyj;break;case3:lyj.setText+xlyj/ylyj;break;}}elseife
2.getSource==hehe24{//单击.按钮输入小数iflyj.getText.trim.indexOf.!=-1//判断字符串中是否已经包含了小数点{}else{//如果没数点有小iflyj.getText.trim.equals0{//如果初时显示为0lyjstr.setLength0;lyj.setTextlyjstr.append0+e
2.getActionCommand.toString;}elseiflyj.getText.trim.equals{//如果初时显示为空则不做任何操作}else{lyj.setTextlyjstr.appende
2.getActionCommand.toString;}}ylyj=0d;}elseife
2.getSource==hehe11{//求平方根xlyj=Double.parseDoublelyj.getText.trim;lyj.setText数字格式异常;ifxlyj0lyj.setText负数没有平方根;elselyj.setText+Math.sqrtxlyj;lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe16{//单击了%按钮xlyj=Double.parseDoublelyj.getText.trim;lyj.setText+
0.01*xlyj;lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe21{//单击了1/X按钮xlyj=Double.parseDoublelyj.getText.trim;ifxlyj==0{lyj.setText除数不能为零;}else{lyj.setText+1/xlyj;}lyjstr.setLength0;ylyj=0d;}elseife
2.getSource==hehe3{lyjm=0d;lyjstr.setLength0;}elseife
2.getSource==hehe5{lyjm=Double.parseDoublelyj.getText.trim;lyj.setText0;lyjstr.setLength0;}elseife
2.getSource==hehe6//“结果并加”是将显示的数字与已经存储的数据相加,要查看新的数字单击“清除记忆”{lyjm=lyjm+Double.parseDoublelyj.getText.trim;}else//选择的是其他的按钮{ife
2.getSource==hehe22//如果选择的是0这个数字键{iflyj.getText.trim.equals0//如果显示屏显示的为零不做操作{}else{lyj.setTextlyjstr.appende
2.getActionCommand.toString;ylyj=Double.parseDoublelyj.getText.trim;}}elseife
2.getSource==hehe0//选择的是“退格”按钮{if!lyj.getText.trim.equals0//如果显示屏显示的不是零{iflyjstr.length!=1{lyj.setTextlyjstr.deletelyjstr.length-1lyjstr.length.toString;//可能抛出字符串越界异常}else{lyj.setText0;lyjstr.setLength0;}}ylyj=Double.parseDoublelyj.getText.trim;}else//其他的数字键{lyj.setTextlyjstr.appende
2.getActionCommand.toString;ylyj=Double.parseDoublelyj.getText.trim;}}}catchNumberFormatExceptione{lyj.setText数字格式异常;e.printStackTrace;}catchStringIndexOutOfBoundsExceptione{lyj.setText字符串索引越界;}}}publicstaticvoidmainStringargs[]{newCalculotor;}}。