# 20155224 第十一周 课堂练习《计算后缀表达式的值》

20155224 第十一周 课堂练习《计算后缀表达式的值》

代码实现

操作数和运算符的入栈与计算如下:

//如果是运算符,调用isOperator
            if (isOperator(token)) {
                op2=(stack.pop()).intValue();//从栈中弹出操作数2
                op1=(stack.pop()).intValue();//从栈中弹出操作数1
                result=evalSingleOp(token.charAt(0),op1,op2);//根据运算符和两个操作数调用evalSingleOp计算result;
                stack.push(new Integer(result));//计算result入栈;
            }
            else {
                //如果是操作数
                stack.push(new Integer(Integer.parseInt(token)));// 操作数入栈;
            }

        }
        return result;
    }

检测到运算符后,将op1和op2出栈并进行运算。如果不是运算符,将数字入栈。

其他部分如蓝墨云上已给出部分。

检测

检测代码如下

public class MyDCTester {
    public static void main(String[] args) {
        String expression, again;
        int result;
        try {
            Scanner in = new Scanner(System.in);
            do {

                MyDC evaluator = new MyDC();
                System.out.println("Enter a valid postfix expression: ");
                expression = in.nextLine();
                result = evaluator.evaluate(expression);
                System.out.println();
                System.out.println("That expression equals " + result);
                System.out.print("Evaluate another expression [Y/N]? ");
                again = in.nextLine();
                System.out.println();

            } while (again.equalsIgnoreCase("y"));
        } catch (Exception IOException) {
            System.out.println("Input exception reported");
        }
    }
}

简单测试了加法、乘法的计算情况,和非法输入的情况。
1072288-20170503110627664-633476260.png

码云链接

转载于:https://www.cnblogs.com/nxy970408/p/6800836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值