计算器设计主要分为四个部分
1.程序主体页面的设计,页面按钮实现程序的输入输出与结果显示。
2.给算式合法性创建约束。
3.中缀转后缀。
4.计算代码的实现,完成混合求解。
而程序总体分为三个部分
1.图形页面部分。
2.数据的合法性约束与计算。
3.主函数调用鼠标。
1.图形页面的设计
1.show类画出程序主页面大小与初始位置等属性。
2.定义JPanel画计算器页面内部页面,其中需要:
1)计算器按钮的位置和大小。
2)背景颜色。
3)按键效果。
4)计算器的网络和边界线绘制。
5)字体,输入字和显示器中输入字的记录。
2.约束
1.左右括号后只能是运算符。
2.小数点后如果没有数字则当做整数运算。
3.输入框是空直接等报错。
4.有左括号没有右括号自动补全。
5.小数点只能有一个,两个小数点报错。
3.中缀转后缀
后缀表达式适合计算机的运算。但人却不容易写出来。所以程序要将中缀表达式转换为后缀表达式。
参考:中缀表达式转换为后缀表达式 - 格物致知_Tony - 博客园
中缀转后缀运用到栈的知识。
从左到右扫描每一个字符。如果扫描到的字符是操作数(如a、b等),就直接输出这些操作数。
如果扫描到的字符是一个操作符则
(1)如果堆栈是空的或者该操作符的优先级大于堆栈出口的操作符,直接将操作符存储到堆栈中。
(2)如果该操作符的优先级低于堆栈出口的操作符,就将堆栈出口的操作符导出, 直到该操作符的优先级大于堆栈顶端的操作符。将扫描到的操作符导入到堆栈中。
的处理:
如果遇到的操作符是左括号"(”,就直接将该操作符输入到堆栈当中。该操作符只有在遇到右括号“)”的时候移除。这是一个特殊符号该特殊处理。
如果扫描到的操作符是右括号“)”,将堆栈中的操作符导出到output中输出,直到遇见左括号“(”。将堆栈中的左括号移出堆栈。继续扫描下一个字符。
如果输入的中缀表达式已经扫描完了,但是堆栈中仍然存在操作符的时候,我们应该讲堆栈中的操作符导出并输入到output当中。
4.带括号式子的运算
使用前面水缀表达式的数组和一个空栈,完成相关式子的计算。
- 遇到是数字就进栈。
- 遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈。
这样就实现了括号的运算