利用栈实现综合计算器(java编写)

栈实现综合计算器

只是考虑加减乘除的情况下
使用栈完成表达式的计算思路:
1.通过一个index(索引),来遍历表达式
2.如果遍历的是数字,则直接进入数栈
3.如果遍历的是一个符号,则需要分一下几种情况:
 (1)如果当前的符号栈是空的,则符号可直接入栈
 (2)如果当前的符号栈非空,则需要进行比较,当前操作符的优先级小于或等于栈中的操作符,则需要从数栈中pop出两个数,再从符号栈中pop一个符号,进行运算,将得到的结果再入数栈,当前的符号入符号栈;如果当前操作符的优先级大于符号栈中的操作符,则当前操作符直接入符号栈。
4.当表达式被遍历完毕,就顺序从数栈和符号栈中 pop出相应的数和符号,并进行运算
5.最后在数栈中只有一个数字,就是表达式结果

代码如下,纯纯按照上述思路来完成的代码,代码不是很精炼,很浪费空间,但是很好理解,很适合初学者从理论的理解上升到代码的实现

public class Calculation {
   
    public static void main(String[] args) {
   
        String expretion = "70+120*6-4";
        ArrayStack2 numStack = new ArrayStack2(10);
        ArrayStack2 operStack = new ArrayStack2(10);
        int index = 0;
        int num1 = 0;
        int num2 = 0;
        int oper = 0;
        int res = 0;
        char ch = ' ';
        String keepNum = "";

        while (true){
   
            ch = expretion.substring(index,index+1).charAt(0);
            if (operStack.isOper(ch)){
   
                if (!operStack.isEmpty()){
   
                    if (operStack.priority(ch) <= operStack.priority(operStack.peek())){
   
                        num1 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值