java计算器课程报告_java计算器课程设计报告

这篇博客详细介绍了作者在Java课程设计中实现一个科学计算器的过程,包括基础和扩展功能,如不同进制转换、各种数学函数和逻辑运算。遇到的主要问题包括界面转换、进制运算、精度问题和运算符重复输入,作者分别提出了有效的解决方案。代码主要包括4个Java文件,用于堆栈操作、表达式计算、界面布局和主程序控制。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifjava计算器课程设计报告

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值