首页 > 其他分享 >逆波兰计算器-栈

逆波兰计算器-栈

时间:2022-11-30 23:45:36浏览次数:36  
标签:String num2 int res item 波兰 计算器 stack

java.util.Stack;

/**

  • @PROJECT_NAME: DataStruct

  • @DESCRIPTION:

  • @USER: 28416

  • @DATE: 2022/11/30 14:41

  • 逆波兰表达式
    */
    public class PolandNotation {
    public static void main(String[] args) {
    //先定义一个逆波兰表达式
    String suffixExpression = "3 4 + 5 * 6 -";
    //思路
    //1.先将 3 4 + 5 * 6 - 放入到arraylist中
    //将arraylist 传递一个方法,遍历 配合栈 完成计算
    List prnList = getListString(suffixExpression);
    System.out.println("prnList"+prnList);

     int res = calculate(prnList);
     System.out.println(res);
    

    }
    //将一个逆波兰表达式依次将数据和运算符 放入到ArrayList中
    public static List getListString(String suffixExpression){
    //将 suffixExpression 分割
    String[] split = suffixExpression.split(" ");
    List list = new ArrayList();
    for (String ele : split) {
    list.add(ele);
    }
    return list;
    }
    //完成对逆波兰表达式的计算
    public static int calculate(List ls){
    //创建栈,只需要一个栈即可
    Stack stack = new Stack();
    //遍历 ls
    for (String item : ls) {
    //正则表达式
    if (item.matches("\d+")){
    //入栈
    stack.push(item);
    }else {
    //弹出两个数 进行运算 在入栈
    int num2 = Integer.parseInt(stack.pop());
    int num1 = Integer.parseInt(stack.pop());
    int res = 0;
    if (item.equals("+")){
    res = num1 + num2;
    }else if (item.equals("-")){
    res = num1 - num2;
    }else if (item.equals("*")) {
    res = num1 * num2;
    }else if (item.equals("/")) {
    res = num1 / num2;
    }else {
    throw new RuntimeException("运算符有误");
    }
    stack.push(""+res);
    }
    }
    return Integer.parseInt(stack.pop());
    }

}

标签:String,num2,int,res,item,波兰,计算器,stack
From: https://www.cnblogs.com/wiseleer/p/16940182.html

相关文章

  • C#-简易公式计算器代码实现
    计算器如图所示,仅实现加减乘除及括号功能,公式错误时会有提示。首先建立一个inputList,每点击数据一下,便将内容添加至inputList中,点击后退时则删除List中最后一个元素。......
  • 浪潮信息与Atos波兰达成战略合作
    近日,浪潮信息与全球领先的IT解决方案公司Atos波兰签署战略合作协议,进一步夯实欧洲本土化服务能力。作为最新加入的渠道供应商,Atos将发挥其专业的增值能力,赋能浪潮信息为欧洲......
  • 教你用Python制作BMI计算器
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用Python相关知识,做一个BMI计算器的案例。你可以通过控制台的提示信息,输入身高和体重,注意单位,系......
  • 代码随想录算法训练营Day11|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、15
    代码随想录算法训练营Day11|20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值20.有效的括号题目链接:20.有效的括号字符串只包括'(',')','{......
  • 栈实现计算器的操作
    栈实现计算器的操作使用一个栈完成计算一个表达式的结果使用两个栈:数栈(存放数)符号栈(存放运算符)思路通过一个index值,来遍历我们的表达式如果我们发现一个数字,......
  • Ext实现简单计算器
    以下是本人原创,如若转载和使用请注明转载地址。本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!​​少帅的博客​​使用Ext实现简单计算器,网页版实现1、页面......
  • 计算器之webservice实现
    以下是本人原创,如若转载和使用请注明转载地址。本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!​​​一、根据我的上一篇博客​​MyEclipse构建WebService......
  • 代码随想录算法训练营第十一天 | 20. 有效的括号 1047. 删除字符串中的所有相邻重
    今日内容:●20.有效的括号●1047.删除字符串中的所有相邻重复项●150.逆波兰表达式求值详细布置20.有效的括号讲完了栈实现队列,队列实现栈,接下来就是栈......
  • 第2-4-8章 规则引擎Drools实战(1)-个人所得税计算器
    目录9.Drools实战9.1个人所得税计算器9.1.1名词解释9.1.2计算规则9.1.2.1新税制主要有哪些变化?9.1.2.2资较高人员本次个税较少,可能到年底扣税增加?9.1.2.3关于年度汇......
  • WIN10计算器-关于十六进制
      1.HEX代表十六进制2.DEC代表十进制3.OCT代表八进制4.BIN代表二进制   ......