java计算器课程设计报告

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 ()然后在窗口 中显示。

java计算器课程报告_java计算器课程设计报告相关推荐

  1. java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc

    Java程序设计课程设计-猜数字游戏设计.doc 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 课 程 设 计 报 告课程设计名称 Jav ...

  2. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx

    java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...

  3. 英汉词典c语言实验报告,大学课程英汉电子词典设计报告设计C语言C语言程序设计.doc...

    课程设计 课程名称 :C语言程序课程设计 题目名称 :电子英汉词典 学生学院 :电气信息学院 专业班级 :自动化1101 学 号 :201101020104 学生姓名 :胡拚 联系方式 指导教师 :陈 ...

  4. java坦克大战总体功能设计_Java坦克大战设计报告.doc

    Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...

  5. java报告模板_Java大作业设计报告模板.doc

    Java大作业设计报告模板 <Java程序设计>大作业设计报告 设计名称 多人在线聊天小程序 学生姓名 学 号 学生班级 设计时间 设计成绩 一.问题描述及设计思路 问题描述:用java ...

  6. java计算器取余_Java计算器的制作与完善

    一.Java计算器v1.0 要求:完成整数的加减乘除以及取余运算. 代码: package com.neusoft.homework; import java.util.Scanner; public ...

  7. c语言万年历大作业报告,C语言万年历设计报告

    <C语言万年历设计报告>由会员分享,可在线阅读,更多相关<C语言万年历设计报告(14页珍藏版)>请在人人文库网上搜索. 1.C 语言课程 设计报告 题目:编写万年历系统编写万年 ...

  8. android记事本的设计报告,安卓记事本开发设计报告.pdf

    Java 语言设计开题设计报告 题目:基于 Android 手机平台的记事本设计 系 名 计算机科学与技术 专 业 计算机应用技术 学 号 39 学生姓名 游俊茂 指导教师 郭莉 2015 年 05 ...

  9. 万年历java课程设计报告_java万年历课程设计报告2010

    一.课程设计任务及要求 (1)设计任务: 编写一个Java 万年历程序,实现日期和星期的查询. (2)设计要求: 1.主界面采用边界布局,北面是一个设置年月的控制面板,中间是日历绘制区: 2.单击&q ...

最新文章

  1. android 手机监听屏幕锁屏,用户解锁
  2. EPSON机器人_SPEL+语言
  3. 64位汇编之linux系统调用
  4. ubuntu修改pip的官方源为豆瓣源
  5. 下面属于javascript内部对象的有_JavaScript从零开始——面向对象编程(2)
  6. 芯烨打印机android驱动,80mm芯烨打印机所有驱动
  7. Jira和禅道哪个好
  8. 物联网行业应用前景分析
  9. python OJ 绝对值最大
  10. 商品订单(增删改查):新增订单;批量删除,发货;模糊查询,下拉菜单内容过滤(含时间);全选反选,列名排序
  11. leetcode No5. Longest Palindromic Substring
  12. mpeg1,mpeg2,mpeg4
  13. HYSBZ 1588 营业额统计 伸展树
  14. ZYNQ 千兆以太网 学习
  15. VS2017离线安装失败解决无法重新安装问题 catalog问题
  16. Android双屏异显
  17. 界面可视化(四):图像在PyQT5上的显示
  18. bzoj 3055 礼物运送
  19. 第13课 Altium Designer20(AD20)+VESC6.4实战教程:将元器件封装导入到PCB(北冥有鱼)
  20. html+css网页开发实战——1、头部背景和文字的制作

热门文章

  1. C6678里的汇编语言,TMS320C6678
  2. UIlabel调整行间距
  3. 04特性源码分析-ReentrantReadWriteLock原理-AQS-并发编程(Java)
  4. SEO实战干货:如何利用老域名打造新站百度快速收录排名!
  5. ‘数据库基础、MariaDB服务部署、库表基本管理、数据类型’经典案例
  6. wps的pdf高亮后怎么取消_pdf高亮文本怎么取消及修改
  7. 神器如 dnSpy,无需源码也能修改 .NET 程序
  8. 影响谷歌排名的10个重要因素【重点关注】
  9. 一张收款码,同时支持微信、云闪付、支付宝、信用卡支付
  10. 中国土地市场网爬虫案例