目录
一、实验目的
- 能通过设计的按钮控件输入并实现算术表达式,表达式在文本框中显示,运算结果输出显示;
- 能够检验算术表达式的合法性; 能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算符;能够保存和浏览历史运算记录;
- 设计一个友好的GUI图形用户界面。
二、算法学习
- 中缀表达式
定义:一般我们生活中常见的表达式都为中缀表达式,主要特点为操作符以中缀的形式处于 操作数的中间,例如:3 + 4 * 2 (a + b * c)。
- 后缀表达式
定义: 运算符放在运算项后面的逻辑表达式,主要特点为操作符以后缀的形式处于操作数之 后,例如:3 4 2 * + (a + b * c)。
- 中缀表达式转换为后缀表达式
从左向右依次读取算术表达式的元素X,分以下情况进行不同的处理:
(1)如果X是操作数,直接入队
(2)如果X是运算符,再分以下情况:
a)如果栈为空,直接入栈。
b)如果X==”(“,直接入栈。
c)如果X==”)“,则将栈里的元素逐个出栈,并入队到后缀表达式队列中,直到第一个 配对的”(”出栈。(注:“(”和“)”都不 入队)
d)如果是其他操作符(+ - * /),则和栈顶元素进行比较优先级。 如果栈顶元素的优先级 大于等于X,则出栈并把栈中弹出的元素入队,直到栈顶元素的优先级小于X或者栈 为空。弹出完这些元素后,才将遇到的操作符压入到栈中。
(3)最后将栈中剩余的操作符全部入队。
- 后缀表达式值的计算
首先准备一个栈Res_Stack.
1、从左开始向右遍历后缀表达式的元素。
2、如果取到的元素是操作数,直接入栈Res_Stack,如果是运算符,从栈中弹出2个数进行 运算,然后把运算结果入栈
3、当遍历完后缀表达式时,计算结果就保存在栈里了。
三、编程语言和平台
编程语言:JAVA
IntelliJ IDEA Community Edition 2021.2.1
四、操作难点和解决方案
- 第一次进行非验证性实验,不知道从什么步骤开始。观摩学长学姐的博客目录学习思路。
- 如何制作GUI图形界面。BILIBILI搜索GUI相关代码学习。
- 算法如何由理论知识转化为代码。百度搜索计算器相关代码学习。
- 显示数据的文本框内容每次不断叠加。clearRect清空面板。
- 限制符号个数(表达式合法性)。设置一些参数进行限制。
- 历史记录如何保存。在图形界面额外写三个文本框。
- 计算器出错和可改进情况考虑不周全。参考学长学姐的视频以及日常数学经验。