1. 课程设计内容

设计一个简易的算术运算器。可实现多位数(整数和浮点数)的加、减、乘、除等基本的算术运算,可通过圆括号来改变运算优先级别,圆括号可多层嵌套。

  1. 2. 课程设计要求
  1. 运算规则为:按运算优先级从高到低进行运算,同级别的运算符,按从左至右运算;有括号出现时先算括号内的,后算括号外的,多层括号由内向外进行。
  2. 程序运行后,从键盘输入算术表达(中缀表达式),要求对输入的表达式进行合法性检测,包括字符的合法性、圆括号的匹配等。
  3. 输入合法的中缀算术表达式,程序给出运算结果

页面大概长这样子

异常机制

原因:Android模拟器运行碰到空指针异常或者一些常见错误很容易直接停止运行,所以增加异常机制,极大地减少了运行停止的情况。计算器通常都能稳定的正常运行,也能保证每次保存上次的结果并在此基础上继续运算.例如当你的表达式出现不符合规则的情况时,例如“+”后面不应该出现其他操作符(括号除外), “(”必须与“)”成对出现”,操作符之后没有数字等就会触发异常机制

(2)合法性检测

  1. 圆括号的匹配,分别对左右括号进行计数,左右括号的数量必须一致否则会显“calcFailed”
  2. 小数点前只能是数字
  3. 操作符不能相邻(括号除外)

实现方式: 输入操作符之前经过多层嵌套筛选,符合条件才能有效加入

负数运算

实现方式:将0插入字符串中且跟括号一起使用,例如(-5)在程序中将以(0-5)的形式参与后缀表达式的形成及计算

中缀表达式转后缀表达式

实现方式:

1.从左至右扫描一遍中缀表达式

2.如果读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈,若读取的是运算符,①运算符为左括号直接存入运算符堆栈②运算符为右括号,输出运算符堆栈中的操作符到操作数堆栈,直到遇到左括号为止③运算符为非括号运算符:若操作符堆栈栈顶元素为括号,则直接进入操作符堆栈;若比栈顶操作符的优先级高或者相等,直接进入操作符堆栈;若比运算符堆栈栈顶的运算符优先级低,则输出栈顶运算符到操作数堆栈,并将当前运算符压入运算符堆栈。

3.当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到操作数堆栈,直到运算符堆栈为空。

计算后缀表达式

实现方式:

把上一步返回储存后缀表达式的数字栈遍历存储于数组1中,另外设置一数组2用于模拟储存计算过程,遍历数组一:

  • 读取的为数字,则将其储存在数组2中
  • 读取的为操作符,则移出数组2末尾的两个数据并且经过四则      运算后重新加入数组2

最后数组2将只存在一个数据,即最终结果

翻转小功能

实现方式:

绑定TURN按钮设置点击事件 若当前页面为竖直页面则重新创建Activity为水平页面; 若当前页面为水平页面则重新创建Activity为竖直页面

最后完整代码放在gitee上啦需要自取

https://gitee.com/JacksonSpace/android-calculator

Android计算器 (课程设计项目)相关推荐

  1. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  2. 软件工程小组课程设计项目

    软件工程小组课程设计项目       每周任务分解表 第七周 本周的任务是整理一份简单的需求说明. @「Diver」统筹安排.分配任务 @The third concerned party 根据pdf ...

  3. android adidl回调,合工大Android开发课程报告.docx

    PAGE PAGE # PAGE PAGE # 通信工程师综合实训与实践 Android开发课程报告 学院:计算机与信息学院 姓名: 学号: 班级: 扌旨导老师:丁志中 PAGE PAGE # PAG ...

  4. linux项目课程设计,LINUX课程设计项目需求解析.doc

    LINUX课程设计项目需求解析 1引言 目前大学生就业形势越来越严峻,为了给学生增加就业砝码,学校为每个学生提供一个展示自我的平台,在学校web服务器上开通注册通道,让每个学生都可以拥有自己的个人网站 ...

  5. java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告

    [实例简介] java仿windows简易计算器课程设计 源码+报告 课直接运行. [实例截图] [核心代码] Java课设-简易计算器 └── Java课设-简易计算器 ├── Java课程设计.d ...

  6. 从零开始学android编程_小白也能学得会!谷歌推出免费的Kotlin和Android开发课程...

    程序员书库(ID:CodingBook) 猿妹编译 链接:https://android-developers.googleblog.com/2020/07/learn-android-and-kot ...

  7. #周末课堂# 赵扬老师 Android系列课程【ListView完全解析、Memory in Android】(火热报名中~~~)...

    课程名称: 课程一: Android晋级系列讲座之ListView完全解析(中级课程) 课程二: Memory in Android(高级课程) 讲师资料:      讲师 - 赵杨 - Androi ...

  8. android计算器开发论文,基于Android计算器功能的实现毕业设计论文

    <基于Android计算器功能的实现毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Android计算器功能的实现毕业设计论文>相关文档资源请在帮帮文库(ww ...

  9. Android studio课程设计开发实现---日记APP

    Android studio课程设计开发实现-日记APP 文章目录 Android studio课程设计开发实现---日记APP 前言 一.效果 二.功能介绍 1.主要功能 2.涉及知识点 三.实现思 ...

  10. 简易计算机课程设计总结,简单计算器课程设计报告.doc

    简单计算器课程设计报告 目录 1.基本功能描述1 2.设计思路1 2.1相关说明1 2.2各块流程图2 3.软件设计7 3.1 设计步骤7 3.2 界面设计9 3.2.1添加图标9 2.2.2添加控件 ...

最新文章

  1. 浏览器事件监听的方法
  2. linux高编线程-------线程的创建,终止
  3. 广汽研究院BMS软件工程师_八大高手齐聚CATIA决赛,3人获“广汽技术创新能手”...
  4. moxy json介绍_MOXy的对象图– XML和JSON的输入/输出局部模型
  5. c mysql 视图_MySQL入门教程(七)之视图
  6. 【数据库系统】SQL基本固有类型
  7. easyexcel导入时读不到数据_easyexcel读取任意表格以及使用中的坑
  8. Hadoop伪分布式集群的安装部署
  9. 更改虚拟机centos7的系统时间
  10. Navicat for mac破解版
  11. RFC(请求注解)--各种协议-标准
  12. 前端笔记:飞机航线图
  13. android自动照相机2.0,Camera2.0下载
  14. 【疑难杂症】Oculus Quest2 手机配对时找不到5-digit-code
  15. 多连接数据库管理Navicat Premium 中文
  16. nginx缓冲区链表chain
  17. java数值型转字符型_Java中数值型,字符型及字符串的相互转换
  18. 【自然语言处理】-jieba库学习笔记(一)
  19. office 2016安装包下载
  20. Windows远程桌面实现之十 - 把xdisp_virt项目移植到iOS,macOS,linux平台(一)

热门文章

  1. SVN客户端安装教程
  2. MySQL 数据库性能优化之缓存参数优化
  3. getch方法_getch()函数
  4. Java递归算法实例
  5. 基于复杂网络的股票分析论文研读
  6. KaTeX数学公式语法
  7. JAVA网络编程实战(笔记)
  8. 云服务器发送开锁信息给单车,史上超全共享单车车锁的开锁方式(含具体方案)...
  9. 基于Android Studio的游戏开发-横版格斗.part
  10. 草根站长胖子讲述做站故事