栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 利用栈计算后序表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 利用栈计算后序表达式

Java 利用栈计算后序表达式

假设输入的后序表达式以空格作为分隔符

思路

创建一个栈用来存储操作数顺序读取表达式输入遇到操作数就压入栈遇到 + - * / 时,弹出两个操作数,弹出的第一个操作数是右操作数,第二个是左操作数,用两个操作数进行相应的运算,将运算结果压入栈最终栈中剩下的那个数就是计算结果 代码

import java.util.Scanner;
import java.util.Stack;

public class evaluatePostfix {
    public static void main(String[] args) {
        Stack stack = new Stack<>();
        Scanner s = new Scanner(System.in);
        while(s.hasNext()) {
            String str = s.next();
            if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")) {
                double val = stack.pop();
                switch(str) {
                    case "+" : val = stack.pop() + val; break;
                    case "-" : val = stack.pop() - val; break;
                    case "*" : val = stack.pop() * val; break;
                    case "/" : val = stack.pop() / val;
                }
                stack.push(val);
            }else stack.push(Double.parseDouble(str));
        }
        System.out.println(stack.pop());
    }
}

后序表达式中两个操作数加上紧随其后的一个操作符可以看成是整个表达式中的一个操作数

参考资料

[1] Robert Sedgewick and Kevin Wayne -> https://algs4.cs.princeton.edu/13stacks/evaluate.java.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号