Java计算器课程设计报告.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java计算器课程设计报告.doc

《Java计算器》 Java课程设计报告 姓 名: ******** 学 号: ******** 专 业: ************ 一.程序要实现的功能: 基础功能:类似windows计算器-普通计算器所具有的,数的输入、加、减、乘、除、开根号、求倒数、退格、清空,以及数字储存器中的MR 显示 、MC(清空)、M+(相加)、MS(储存) 扩展功能: 类似windows计算器-科学计算器所具有的,各种函数(包括正三角反三角函数)计算,不同进制转换,逻辑与或非等操作。 二.程序算法功能实现(大概) 以下为运算功能简易示意图: 不同进制转换: 此功能独立于计算器其他功能,计算器运行过程中设定一个变量carry储存当前进制转态,每次运算时先将屏幕显示的数字转化成十进制然后带入运算,对于要显示在计算器屏幕的结果也要先进行十进制转换为当前进制然后显示。 三.遇到问题及解决方案 1.普通计算器到科学计算器的界面转换: 科学计算器的界面显然比普通计算器界面要复杂,按钮要多,而无论怎样修改布局都无法完整得在科学计算器和普通计算器之间切换。 解决方案: 将计算器的界面布局的类设为扩展JPanel的类CreateButton,该类中设置两个方法,一个方法进行科学计算器的界面布局,一个方法进行普通计算器的界面布局,两个方法依靠CreateButton类构造函数种的参数决定调用哪个方法,在主的类里面若要在科学计算器和普通计算器之间切换,只要为当前面板new一个CreateButton,并设置好参数,就可以换一个界面。 2.不同进制输入输出与运算问题: 由于科学型计算器涉及不同进制的输入输出与运算,而不同的进制运算规则稍有不同,因此不同进制输入输出与运算就成了一个问题。 解决方案: 设置一个全局变量表示当前进制状态,而程序运行过程处理数据都以十进制形式,也就是仅在显示时,按照当前进制状态,将十进制转化为相应进制。 3.JAVA已有的函数计算精度不够: 例如sin函数计算,java对sin函数计算的参数是弧度制,但是如果用Math.sin()计算Pi/6(即sin30度),那么结果是0.座机电话号码而不是0.5。同样,cos,tan也都出现这种情况。 查出原因:Java中对PI的计算只是估算,精度不够。 解决方案: 如果要计算 sin x ,(x是角度),那么先用Math.sin x/180*Math.PI 得到不精确的值sinx,再将用Math.rint sinx*100000000 /100000000.0进行舍入处理。便得到想要的结果。 4.运算符重复输入: 正常情况下是输入一个数值,然后按下运算符按钮,数值,和运算符先后进栈,然后再按一次同样的按钮时,运算符再次进栈,造成栈内运算符错位。 解决方案: 设置一个转态检查机制,也就是设置一个变量储存之前输入一个数字,那么下一次就只能是运算符,如果之前输入的是运算符,那么下一步只能输入数字。 运用同样的方法解决了小数点重复,括号重复问题。 除以上问题以外,这次程序遇到最多的问题就在使用 用于处理运算的类里,因为该类涉及堆栈操作,如果外部传入参数不符合一般算式的罗列规则,很容易引起空操作,数据丢失,数字重复计算,无限循环等各种错误。这一点上,虽然Java没有指针,但似乎在这里碰到的问题,必须得以指针的方式来思考。 五.资源列表及说明 本次课程设计代码包括4个java文件: EvaluateExpression.java ExpressStack.java CreateButton.java Calcuate.java 其中: ExpressStack.java 是新建的堆栈类,用于创建和处理堆栈数据 EvaluateExpression.java 是计算表达式类,通过创建堆栈,将传入的数字或运算符储存并做相应的运算然后返回运算结果 CreateButton.java 计算器界面按钮布局及其功能方法的类,该类扩展JPanel类,布局计算器界面,并实现了各个按钮的功能。 Calcuate.java 主类,创建菜单栏,并new 出相应的布局界面CreateButton ()然后在窗口中显示。 Java计算器 - 1 - 否 否 是 是 是否双目运算符 调用单目运算函数的方法对当前数字进行计算,并将结果覆盖原数字 将屏幕中的数字压入运算栈,将当前运算符压入运算栈 调用数字按钮事件监听 是否数字 开始

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档