Android计算器 (课程设计项目)

  1.  课程设计内容

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

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

 页面大概长这样子

Android计算器 (课程设计项目)_第1张图片

 

异常机制

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

Android计算器 (课程设计项目)_第2张图片

Android计算器 (课程设计项目)_第3张图片

(2)合法性检测

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

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

Android计算器 (课程设计项目)_第4张图片

负数运算

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

Android计算器 (课程设计项目)_第5张图片

中缀表达式转后缀表达式

实现方式:

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

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

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

Android计算器 (课程设计项目)_第6张图片计算后缀表达式

实现方式:

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

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

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

 翻转小功能

实现方式:

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

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

Android计算器 (课程设计项目)_第7张图片https://gitee.com/JacksonSpace/android-calculator

你可能感兴趣的