后缀表达式计算

上期回顾


我们上期学习由中缀表达式转为后缀表达式 但是没有进行计算。这一期我们进行后缀表达式计算讲解。

由中缀表达式转化为后缀表达式我们还是得到一个以空格分隔好的字符串。我们现在考虑的是计算问题。所以其实大体思路和中缀表达式计算基本相似。下面是我对其进行分析实现。


思路分析

首先 我们由上期文章学会了把一个中缀表达式转化为后缀表达式了,可是得到的式子却和中缀表达式不完全相同(格式上)。我们得到的后缀表达式只有数字和操作符 而且都是已经拿空格把他们分隔开了。所以现在我们只需要对其遍历进行计算。

定义一个字符串 我们还是拿老例子来说。通过调用我们学过的中缀转后缀表达式的类中转化的方法函数来进行直接转化。转化方法是用static进行修饰的,所以我们直接用类名点方法名直接调用,传入我们定义好的字符串,赋给新的字符串。这样我们的后缀表达式就产生了。

代码实现:

 String infixExpression = "(10+20/2*3)/2+8";
 String suffixExpression = InfixToSufix.infixToSuffix(infixExpression);

我们现在得到后缀表达式了 就是进行计算。在这里我们用到一个辅助栈用来存放数字就可以 因为操作符不需要进栈 直接在外进行使用即可。所以定义的stack就是Integer类型的。我们还是要用split()方法以空格分割字符串,放入字符串数组中,以便更好地去遍历。

现在对字符串数组进行遍历。首先要把空字符串滤除掉。然后再去进行判断是否为数字(还是定义一个函数方法isNumber)还是操作符;当遍历到数字的时候,直接让数字进栈即可(注意: 我们遍历到的数字是以字符串形式的格式遍历的&#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值