Android计算器 (课程设计项目)
Posted Q_Jackson
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android计算器 (课程设计项目)相关的知识,希望对你有一定的参考价值。
设计一个简易的算术运算器。可实现多位数(整数和浮点数)的加、减、乘、除等基本的算术运算,可通过圆括号来改变运算优先级别,圆括号可多层嵌套。
- 运算规则为:按运算优先级从高到低进行运算,同级别的运算符,按从左至右运算;有括号出现时先算括号内的,后算括号外的,多层括号由内向外进行。
- 程序运行后,从键盘输入算术表达(中缀表达式),要求对输入的表达式进行合法性检测,包括字符的合法性、圆括号的匹配等。
- 输入合法的中缀算术表达式,程序给出运算结果
页面大概长这样子
异常机制
原因:android模拟器运行碰到空指针异常或者一些常见错误很容易直接停止运行,所以增加异常机制,极大地减少了运行停止的情况。计算器通常都能稳定的正常运行,也能保证每次保存上次的结果并在此基础上继续运算.例如当你的表达式出现不符合规则的情况时,例如“+”后面不应该出现其他操作符(括号除外), “(”必须与“)”成对出现”,操作符之后没有数字等就会触发异常机制
(2)合法性检测
- 圆括号的匹配,分别对左右括号进行计数,左右括号的数量必须一致否则会显“calcFailed”
- 小数点前只能是数字
- 操作符不能相邻(括号除外)
实现方式: 输入操作符之前经过多层嵌套筛选,符合条件才能有效加入
负数运算
实现方式:将0插入字符串中且跟括号一起使用,例如(-5)在程序中将以(0-5)的形式参与后缀表达式的形成及计算
中缀表达式转后缀表达式
实现方式:
1.从左至右扫描一遍中缀表达式
2.如果读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈,若读取的是运算符,①运算符为左括号直接存入运算符堆栈②运算符为右括号,输出运算符堆栈中的操作符到操作数堆栈,直到遇到左括号为止③运算符为非括号运算符:若操作符堆栈栈顶元素为括号,则直接进入操作符堆栈;若比栈顶操作符的优先级高或者相等,直接进入操作符堆栈;若比运算符堆栈栈顶的运算符优先级低,则输出栈顶运算符到操作数堆栈,并将当前运算符压入运算符堆栈。
3.当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到操作数堆栈,直到运算符堆栈为空。
计算后缀表达式
实现方式:
把上一步返回储存后缀表达式的数字栈遍历存储于数组1中,另外设置一数组2用于模拟储存计算过程,遍历数组一:
- 读取的为数字,则将其储存在数组2中
- 读取的为操作符,则移出数组2末尾的两个数据并且经过四则 运算后重新加入数组2
最后数组2将只存在一个数据,即最终结果
翻转小功能
实现方式:
绑定TURN按钮设置点击事件 若当前页面为竖直页面则重新创建Activity为水平页面; 若当前页面为水平页面则重新创建Activity为竖直页面
最后完整代码放在gitee上啦需要自取
以上是关于Android计算器 (课程设计项目)的主要内容,如果未能解决你的问题,请参考以下文章
[项目实战] Android通用框架设计与完整电商APP开发项目实战视频教程