栈完成算术表达式的处理
发布时间
阅读量:
阅读量
实现思路概述
实现该功能需要借助两个栈结构,分别用于存放运算符与数值元素。
-
利用一个索引值对表达式进行逐项扫描
-
当识别到当前字符为数字时,直接将其压入数值栈
-
当识别到当前字符为运算符时,需根据具体情况处理
3.1 若此时运算符栈处于空状态,则将该运算符直接压入栈内
3.2 若运算符栈中已有运算符,则需进行优先级比较。若当前运算符的优先级低于或等于栈顶运算符的优先级,则需从数值栈中弹出两个数值,并从运算符栈中弹出一个运算符执行计算,将所得结果重新压入数值栈,随后将当前运算符压入运算符栈。若当前运算符的优先级高于栈顶运算符的优先级,则直接将其压入运算符栈。 -
表达式扫描结束后,按照顺序依次从数值栈和运算符栈中弹出对应数值与运算符号,并执行相应计算操作。
-
最终在数值栈中仅剩下一个数字,即为表达式的最终计算结果。
代码实现
public class Calculator {
public static void main(String[] args) {
//根据前面老师思路,完成表达式的运算
String expression = "300+2*6-2"; // 15//如何处理多位数的问题?
//创建两个栈,数栈,一个符号栈
全部评论 (0)
还没有任何评论哟~
