Android计算器 (课程设计项目)
- 课程设计内容
设计一个简易的算术运算器。可实现多位数(整数和浮点数)的加、减、乘、除等基本的算术运算,可通过圆括号来改变运算优先级别,圆括号可多层嵌套。
- 2. 课程设计要求
- 运算规则为:按运算优先级从高到低进行运算,同级别的运算符,按从左至右运算;有括号出现时先算括号内的,后算括号外的,多层括号由内向外进行。
- 程序运行后,从键盘输入算术表达(中缀表达式),要求对输入的表达式进行合法性检测,包括字符的合法性、圆括号的匹配等。
- 输入合法的中缀算术表达式,程序给出运算结果
页面大概长这样子
异常机制
原因:Android模拟器运行碰到空指针异常或者一些常见错误很容易直接停止运行,所以增加异常机制,极大地减少了运行停止的情况。计算器通常都能稳定的正常运行,也能保证每次保存上次的结果并在此基础上继续运算.例如当你的表达式出现不符合规则的情况时,例如“+”后面不应该出现其他操作符(括号除外), “(”必须与“)”成对出现”,操作符之后没有数字等就会触发异常机制
(2)合法性检测
- 圆括号的匹配,分别对左右括号进行计数,左右括号的数量必须一致否则会显“calcFailed”
- 小数点前只能是数字
- 操作符不能相邻(括号除外)
实现方式: 输入操作符之前经过多层嵌套筛选,符合条件才能有效加入
负数运算
实现方式:将0插入字符串中且跟括号一起使用,例如(-5)在程序中将以(0-5)的形式参与后缀表达式的形成及计算
中缀表达式转后缀表达式
实现方式:
1.从左至右扫描一遍中缀表达式
2.如果读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈,若读取的是运算符,①运算符为左括号直接存入运算符堆栈②运算符为右括号,输出运算符堆栈中的操作符到操作数堆栈,直到遇到左括号为止③运算符为非括号运算符:若操作符堆栈栈顶元素为括号,则直接进入操作符堆栈;若比栈顶操作符的优先级高或者相等,直接进入操作符堆栈;若比运算符堆栈栈顶的运算符优先级低,则输出栈顶运算符到操作数堆栈,并将当前运算符压入运算符堆栈。
3.当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到操作数堆栈,直到运算符堆栈为空。
计算后缀表达式
实现方式:
把上一步返回储存后缀表达式的数字栈遍历存储于数组1中,另外设置一数组2用于模拟储存计算过程,遍历数组一:
- 读取的为数字,则将其储存在数组2中
- 读取的为操作符,则移出数组2末尾的两个数据并且经过四则 运算后重新加入数组2
最后数组2将只存在一个数据,即最终结果
翻转小功能
实现方式:
绑定TURN按钮设置点击事件 若当前页面为竖直页面则重新创建Activity为水平页面; 若当前页面为水平页面则重新创建Activity为竖直页面
最后完整代码放在gitee上啦需要自取
https://gitee.com/JacksonSpace/android-calculator
Android计算器 (课程设计项目)相关推荐
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
- 软件工程小组课程设计项目
软件工程小组课程设计项目 每周任务分解表 第七周 本周的任务是整理一份简单的需求说明. @「Diver」统筹安排.分配任务 @The third concerned party 根据pdf ...
- android adidl回调,合工大Android开发课程报告.docx
PAGE PAGE # PAGE PAGE # 通信工程师综合实训与实践 Android开发课程报告 学院:计算机与信息学院 姓名: 学号: 班级: 扌旨导老师:丁志中 PAGE PAGE # PAG ...
- linux项目课程设计,LINUX课程设计项目需求解析.doc
LINUX课程设计项目需求解析 1引言 目前大学生就业形势越来越严峻,为了给学生增加就业砝码,学校为每个学生提供一个展示自我的平台,在学校web服务器上开通注册通道,让每个学生都可以拥有自己的个人网站 ...
- java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告
[实例简介] java仿windows简易计算器课程设计 源码+报告 课直接运行. [实例截图] [核心代码] Java课设-简易计算器 └── Java课设-简易计算器 ├── Java课程设计.d ...
- 从零开始学android编程_小白也能学得会!谷歌推出免费的Kotlin和Android开发课程...
程序员书库(ID:CodingBook) 猿妹编译 链接:https://android-developers.googleblog.com/2020/07/learn-android-and-kot ...
- #周末课堂# 赵扬老师 Android系列课程【ListView完全解析、Memory in Android】(火热报名中~~~)...
课程名称: 课程一: Android晋级系列讲座之ListView完全解析(中级课程) 课程二: Memory in Android(高级课程) 讲师资料: 讲师 - 赵杨 - Androi ...
- android计算器开发论文,基于Android计算器功能的实现毕业设计论文
<基于Android计算器功能的实现毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Android计算器功能的实现毕业设计论文>相关文档资源请在帮帮文库(ww ...
- Android studio课程设计开发实现---日记APP
Android studio课程设计开发实现-日记APP 文章目录 Android studio课程设计开发实现---日记APP 前言 一.效果 二.功能介绍 1.主要功能 2.涉及知识点 三.实现思 ...
- 简易计算机课程设计总结,简单计算器课程设计报告.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添加控件 ...
最新文章
- 浏览器事件监听的方法
- linux高编线程-------线程的创建,终止
- 广汽研究院BMS软件工程师_八大高手齐聚CATIA决赛,3人获“广汽技术创新能手”...
- moxy json介绍_MOXy的对象图– XML和JSON的输入/输出局部模型
- c mysql 视图_MySQL入门教程(七)之视图
- 【数据库系统】SQL基本固有类型
- easyexcel导入时读不到数据_easyexcel读取任意表格以及使用中的坑
- Hadoop伪分布式集群的安装部署
- 更改虚拟机centos7的系统时间
- Navicat for mac破解版
- RFC(请求注解)--各种协议-标准
- 前端笔记:飞机航线图
- android自动照相机2.0,Camera2.0下载
- 【疑难杂症】Oculus Quest2 手机配对时找不到5-digit-code
- 多连接数据库管理Navicat Premium 中文
- nginx缓冲区链表chain
- java数值型转字符型_Java中数值型,字符型及字符串的相互转换
- 【自然语言处理】-jieba库学习笔记(一)
- office 2016安装包下载
- Windows远程桌面实现之十 - 把xdisp_virt项目移植到iOS,macOS,linux平台(一)