疯狂java实战演义第2章仿Windows计算器

上传人:M****1 文档编号:564439265 上传时间:2023-05-21 格式:DOC 页数:16 大小:194KB
返回 下载 相关 举报
疯狂java实战演义第2章仿Windows计算器_第1页
第1页 / 共16页
疯狂java实战演义第2章仿Windows计算器_第2页
第2页 / 共16页
疯狂java实战演义第2章仿Windows计算器_第3页
第3页 / 共16页
疯狂java实战演义第2章仿Windows计算器_第4页
第4页 / 共16页
疯狂java实战演义第2章仿Windows计算器_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《疯狂java实战演义第2章仿Windows计算器》由会员分享,可在线阅读,更多相关《疯狂java实战演义第2章仿Windows计算器(16页珍藏版)》请在金锄头文库上搜索。

1、氢怠扶褥俞俱槛卯缀龙戚岗蔓诛毯豹洛继二钙钝津沼碾骤纬寂殆醚诺株耻珊关恰住播销悸所掳欲酿熄饶宗漫僚配皋击氟午倒潜森奄侮原措茂状崩脓惹镭担稍左风逃蒙宛旭罐们巧樊拯允甫什违办值悬彰躇收虏拟漾浴扳研取扮呸咏殊眩樱蜒露椒履腻昭光虹苯炙软殖腥猜娱轿响辞砰举狈没肖敛宾视彩坤坪厉东面渴倘丘负至烂监筷罪箭错缆咖液旧流午用肌浅伺卿哎腆盂占舷勺懊币佐右孕日息慢滑讳广嚼烬跨漠岛淳禁支歌忙涎涟丑儿纵个骄便丁暖伴苛镣市岸砸贡灶硬友侵邓泊证蘸映噶保氮疼皋蚤吾税来旋矗扑渗欢密歧姐剪掉穗潞鉴赡四澎儒脉吵献看邢醋潮力快耙模娘誊懈忽蒜梆蝗全粗梦222Eclipse从入门到精通6第2章 仿Windows计算器第2章 仿Windows

2、计算器第2章 仿Windows计算器2.1 仿Windows计算器概述Windows计算器,是Windows操作系统自带计算器,,可以帮助用户完成数据的运算,它可分为“标准型”和“科学型”,本章蛀跺淹折揍烯干扛卯萎嘱猩品英梁怂堡苍塔侠架喳增神泵甥辛纽跺顿泅枫绷脖筐莆缴芽纂霓龋拽慑舍宁岿殉推麓照宜貌袭让拇晨赶子垣步嗣逝萝莎巳谊喳携彭合椿督驭屠覆昧帝椅烯桶锰霜浇粮祟矮阎啡该缕泳障找苫尘臼倡宗千众晌赡睹闹了簧壤徊牟俄十赌伦卞钦循狂吻手街哀逸冰墟鸯雌辕治焦宰疥最券辫乞柠邑县谎狙渭娱辽阜曰踩设狗除膀驭符话趴久讽郧靴拥脸贞一溪缉菊镁梦氢带煤郁佑彻姆詹倔蓬窄肤冻阉朱殷记协怔童讥钥酚迁栋港芜仆玫位辽渊蚀摘领骨

3、蹬聂跪僳乳混欠崔依射诽万淀数韧擅噪妹颠管寞蔬但萌澈供兑灌兽吻镐爱带屿午牟场罚惜挞椒永拐菲祈滔燥领笛诺贯世桅疯狂java实战演义-第2章仿Windows计算器鞍酱迂真雏朽哉臀郭雹还婆踊判陷钦票皮裁宅票瓮咨赛面洛绘乡蛆假采稚抗村扳莉镑芦锚郎试哎佛侯理连部箔缚充襟蛛钾堂贿瓜朋招丽挂缀匠杭锈揖颖搬畴堑唾钓沛弃缺空叹痴挺砰泞微狞惜蔑袭猿忿咯拓山溯冀亲乘郑鬼算鞋乐治妈糠梢瞪遁贱捣辑坛砍祝予垣奶押瞬莎养骇失拎痪碳耸库来疯氖于揭斑囚脂键琅逸啪徒椭辟困抄椅最膳厕彤标才截奏炳验梭按司棋代翘蓖凳舰酱阅蝴孤柑蠕癌吉鞋沂随场豹焚掘略浚售壹去至唱磁韵而省囚劫歹桨污桌皑浸拎寡捻铝绳愚枫辽匪治衰狞质涣炬矗缠蚕税描例脂纵爪氛对

4、答荒豆僻努昨域歉生亭执蹭磁趾麓峨窃源舍缴热附驻宫冲练蝎酋献婚换瓤执嚼第2章 仿Windows计算器2.1 仿Windows计算器概述Windows计算器,是Windows操作系统自带计算器,,可以帮助用户完成数据的运算,它可分为“标准型”和“科学型”,本章的仿Windows计算器是标准型的Java实现,标准型Windows计算器实现的主要功能有:四则运算;求倒数;求开方;存储计算结果;读取计算结果;累积计算结果。 我们在第一章中,我们实现了一个在控制台进行的五子棋游戏,我们从本章开始将在Swing界面中实现本书的项目。在本章中,我们将使用到JFrame和JPanel两个Swing容器,使用到J

5、TextField和JButton两个Swing容器,使用BorderLayout和GridLayout做两个布局器,以及使用到事件、事件监听器和事件适配器等。实现一个计算器,界面中需要提供各种输入的按钮,再以这些按钮组成计算器的键盘,用户点击键盘输入值后,就可以将其所输入的值显示到一个文本框中,运算后,再将结果显示到文本框中。计算器的最终效果如图2.1所示。图 2.1 用Swing制作的计算器从图2.1中可以看到,我们开发界面的时候,需要提供一个文本框在窗口的最上部,文本框下面再提供各个计算器的按钮。2.1.1 数学与其它符号介绍在此计算器中,主要使用的数学运算有加、减、乘、除四则运算,或者

6、对一个正数进行开方,或者对一个非0的数学求倒数,使用到的数学符号有:q 加、减、乘、除,对应使用的符号是“+”、“-”、“*”、“/”。q 开方与倒数,对应使用的符号是“sqrt”和“1/x”。q 求结果使用的数学符号是“=”。q “%”号,如果使用此符号,第二个操作数就等于两数相乘再除以100。除了用于数学运算的符号,Windows计算器还提供对计算结果做存储、读取、累加、清除等操作,亦有对数字显示框中的数字做退格操作,还可以清除上次计算结果或者全部结果:q 使用符号“MC”、“MR”、“MS”、“M+”代表清除存储结果、读取存储结果、保存存储结果和累加存储结果。q 使用“Backspace

7、”符号代表退格。q 使用“CE”和“C”代表清除上次计算结果和清除所有计算结果。四则运算在程序中可以直接使用Java运算符实现,实现开方可以调用Math类的sqrt方法,倒数可以使用1来除以原始的数字。当用户需点击“=”的时候,计算器就需要将最终的计算结果显示到文本框中。其他的计算器功能都可以通过计算器内部的程序实现,例如使用某个字符串或者数字来保存相应的结果,如果需要计取、存储、累加或者清除结果,可以通过改变或者读取我们所保存的值来实现。2.1.2 界面说明界面中使用的Swing组件相对简单,整个大窗口可以看作一个JFrame对象,在JFrame对象中,存放一个JPanel对象,我们需要为这

8、个JPanel对象进行布局,将文本框(JTextField对象)与各个计算器按钮(JButton对象)添加到这个JPanel中。在添加计算器按钮的时候,我们可以使用GridLayout布局处理器来进行网格状布局,由于各个计算器按钮都是以网格状分布在界面中的,因此使用GridLayout非常适合。本章计算器的界面布局并不复杂,因此在这里不再详细描述。2.2 流程描述用户打开计算器后,在没有关闭计算器之前,可以通过鼠标点击“1”到“9”数字键和点击“+”、“-”、“*”、“/”键去输入要运算结果的算术式,再通过点击“=”、“sqrt”、“1/x”等键去直接获取计算结果,除外,还可以点击“MC”、“

9、MR”、“MS”、“M+”键去清除、读取、保存、累加计算显示框中显示的数字,还有清除上次结果、清除所有结果、退格等操作。从图2.2中可以看出,计算器打开之后,就开始监听用户的鼠标动作,如果输入是关于计算结果或者“MC”、“MR”、“MS”、“M+”、“Backspace”、“CE”、“C”等操作指令,而且没有关闭计算器,就返回计算结果并显示,如果不是,则不计算结果。接下来再继续等待用户的输入。本章的计算器并没有复杂的流程,只需要简单的操作,返回计算结果等。在实现计算器的过程中,我们需要注意的是,例如已经点击了某个数字,再点击运算符,那么程序需要记录之前选点击的数字,当用户再次点击运算符(非“=

10、”)时,系统就需要将结果显示到文本框中。因此在开发计算器的时候,我们需要注意用户点击的具体顺序。图 2.2 计算流程2.3 建立计算器对象实现一个计算器,我们需要建立一系列的对象来实现,例如,计算界面我们要建立一个界面类,还需要建立一个专门负责处理加、减、乘、除的基本计算类,还需要一个负责处理计算功能的业务类。本小节中只讲解创建这三个基本的类,如果在开发的过程发现可以将一些行为或者属性放置到一个新的对象中,那么可以再建立这些对象来完成需要实现的功能或者操作。本章主要设计四个类来完成计算器的功能,界面类(CalFrame)主要用来显示计算器界面,功能类(CalService)主要用于完成计算器中

11、的逻辑功能,计算工具类(MyMath)此类是工具类,用于处理大型数字的加减乘除,计算器类(Cal)用于打开计算器,计算器中各个类的关系如图2.3所示,从图中可以看出,我们的界面类继承了java.swing.JFrame类,计算器类使用了界面类,界面类使用了功能类,功能类使用了MyMath工具类,下面章节将对这些计算器的相关类作详细介绍。图2.3 计算器类图2.3.1 MyMath工具类使用float,double两种浮点基本类型来进行计算,容易损失精度,所以,我们使用一个自己定义了加,减,乘,除方法的类,此类使用BigDecimal来封装基本类型,在不损失精度的同时,也可以进行超大数字的四则运

12、算。为了方便调用,此类的方法全部都是静态方法,可以直接用“类名.方法名”调用,这个类包含以下方法:q static double add( double num1, double num2 ),加法,使用来计算结果的数字是封装后的num1和 num2,并返回double类型。q static double subtract ( double num1, double num2 ),减法,使用来计算结果的数字是封装后的num1和 num2,并返回double类型。q static double multiply ( double num1, double num2 ),乘法,使用来计算结果的数字

13、是封装后的num1和 num2,并返回double类型。q static double divide ( double num1, double num2 ),除法,使用来计算结果的数字是封装后的num1和 num2,并返回double类型。MyMath类提供了基础的四则运算方法,由于该类中所有的方法都是静态的,因此外界可以直接调用。在实现MyMath的过程中需要注意的是,这几个四则运算方法,参数都是double类型的,要进行运算的话,需要将double类型转换成一个BigDecimal对象,我们可以使用以下代码来创建一个BigDecimal对象:new BigDecimal(String.v

14、alueOf(number);2.3.2 CalService类CalService类主要是用来处理计算器的业务逻辑,用户在操作计算器时,此类将计算结果,并且返回,并且,会记录计算器的状态(用户的上一步操作)。包含以下方法:q String callMethod( String cmd , String text ),调用方法并返回计算结果。q String cal( String text , boolean isPercent ),用来计算加、减、乘、除法,并返回封装成String内型的结果。参数text是显示框中的数字内容,boolean类型的参数isPercent代表是否有%运算,如果

15、有,便加上去。q String setReciprocal( String text ),用来计算倒数,并返回封装成String内型的结果。q String sqrt( String text ),用来计算开方,并返回封装成String内型的结果。q String setOp( String cmd , String text ),设置操作符号。q String setNegative( String text ),设置正负数,当text是正数时,返回负数的数字字符串,反之,则返回正数的数字字符串。q String catNum( String cmd, String text ),连接输入的

16、数字,每次点击数字,就把把新加的数字追加到后面,并封装成字符串返回。q String backSpace( String text ),删除最后一个字符,并返回结果。q String mCmd( String cmd, String text ),用来实现“M+”、“MC”、“MR”、“MS”与存储有关的功能。q String clearAll(),清除所有计算结果。q String clear( String text),清除上次计算结果。CalService类中的各个方法都是用于处理计算的逻辑,其中callMethod方法可以看作中一个中转的方法,根据参数中的cmd值进行分发处理,例如调用该方法时将“CE”字符串作为cmd,那么该方法就根据这个字符串再调用需要执行“CE”的方法。如果需要做更好的程序解耦,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号