上期回顾
我们上期学习由中缀表达式转为后缀表达式 但是没有进行计算。这一期我们进行后缀表达式计算讲解。
由中缀表达式转化为后缀表达式我们还是得到一个以空格分隔好的字符串。我们现在考虑的是计算问题。所以其实大体思路和中缀表达式计算基本相似。下面是我对其进行分析实现。
思路分析
首先 我们由上期文章学会了把一个中缀表达式转化为后缀表达式了,可是得到的式子却和中缀表达式不完全相同(格式上)。我们得到的后缀表达式只有数字和操作符 而且都是已经拿空格把他们分隔开了。所以现在我们只需要对其遍历进行计算。
定义一个字符串 我们还是拿老例子来说。通过调用我们学过的中缀转后缀表达式的类中转化的方法函数来进行直接转化。转化方法是用static进行修饰的,所以我们直接用类名点方法名直接调用,传入我们定义好的字符串,赋给新的字符串。这样我们的后缀表达式就产生了。
代码实现:
String infixExpression = "(10+20/2*3)/2+8";
String suffixExpression = InfixToSufix.infixToSuffix(infixExpression);
我们现在得到后缀表达式了 就是进行计算。在这里我们用到一个辅助栈用来存放数字就可以 因为操作符不需要进栈 直接在外进行使用即可。所以定义的stack就是Integer类型的。我们还是要用split()方法以空格分割字符串,放入字符串数组中,以便更好地去遍历。
现在对字符串数组进行遍历。首先要把空字符串滤除掉。然后再去进行判断是否为数字(还是定义一个函数方法isNumber)还是操作符;当遍历到数字的时候,直接让数字进栈即可(注意: 我们遍历到的数字是以字符串形式的格式遍历的&#