逆波兰表达式

区别于我们平日里的中缀表达式,逆波兰表达式是将运算符号后置,即放在两个数的后面。

例如:

中缀表达式:(a+b)*c

逆波兰表达式:ab+c*

以下使用Java代码计算逆波兰表达式的值:

package DataStructureForJava.Stacks;import java.util.Stack;public class AgainstPoland {public static void main(String[] args) {/*逆波兰表达式为“5 3 1 - * 100 10 / +”*/String[] expression={"5","3","1","-","*","100","10","/","+"};int result=poland(expression);System.out.println(result);}public static int poland(String[] expression){//创建一个栈,来存放数据元素Stack<Integer> stack=new Stack<>();//遍历逆波兰表达式for (int i = 0; i < expression.length; i++) {//获取逆波兰数组的每一个元素String curr=expression[i];//定义三个中间值,进行算术运算Integer s1,s2,result;/*判断元素是运算符还是数据元素若是运算符,则从栈中获取两个数据进行计算若是数据,则将其压入栈中*/switch (curr){case "+":s1=stack.pop();s2=stack.pop();result=s2+s1;stack.push(result);break;case "-":s1=stack.pop();s2=stack.pop();result=s2-s1;stack.push(result);break;case "*":s1=stack.pop();s2=stack.pop();result=s2*s1;stack.push(result);break;case "/":s1=stack.pop();s2=stack.pop();result=s2/s1;stack.push(result);break;default:/*此处栈中元素泛型定义为Integer类型,所以将String类型进行强制转换为Integer类型*/stack.push(Integer.parseInt(curr));break;}}//最后栈中剩下的值即为逆波兰表达式的结果int result=stack.pop();return result;}
}

逆波兰表达式(Java)相关推荐

  1. java 实现逆波兰表达式_逆波兰表达式java实现

    知道逆波兰表达式是一个偶然的情况,在用js的时候偶然发现了js中的一个eval函数,数学的表达式它竟然能直接解析出结果.后面通过查询才得知里面的核心是用的逆波兰表达式的算法.后面网上找了一下java的 ...

  2. java 逆波兰_逆波兰表达式算法-Java版

    这两天一直在看数据结构,栈这个地方,基础的就是这个逆波兰表达式,看了很多博文,都讲得不清不楚或者只能计算一个位的数字,决定自己写,这篇博文给了很大启发–>Go New Land AND Here ...

  3. 【Java版oj】逆波兰表达式求值

    目录 一.原题再现 二.问题分析 三.完整代码 一.原题再现 150. 逆波兰表达式求值 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除 ...

  4. java用逆波兰表达式实现字符串计算器

    1.java版本  import java.math.BigDecimal; import java.util.*;/*** @return* @author Tmz* @description:* ...

  5. Java逆波兰表达式计算

    后缀表达式(逆波兰表达式) 运算符位于操作数之后 从左至右扫描表达式,遇到数字遇到数字时,将数字压栈,遇到运算符时,弹出栈顶的两个元素,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈, ...

  6. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  7. Java 逆波兰表达式完成计算器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 三大表达式 一.中缀转后缀 二.逆波兰表达式计算 总结 三大表达式 前缀表达式 中缀表达式 :就是我们平时常见的表达式 对人来说 ...

  8. 数据结构:后缀表达式(逆波兰表达式)

    逆波兰表达式计算 package com.atchina.stack;import java.util.ArrayList; import java.util.List; import java.ut ...

  9. 逆波兰表达式中缀表达式转换为后缀表达式

    中缀表达式转换为后缀表达式 思路分析 代码实现 package com.atguigu.stack;import javax.swing.plaf.nimbus.State; import java. ...

  10. 数据结构 - 栈 (逆波兰计算器)(栈的三种表达式)(前缀、中缀和后缀表达式,后缀也叫逆波兰表达式)(中缀表达式转后缀表达式实现步骤及完整代码)

    栈的三种表达式:前缀.中缀和后缀表达式,后缀也叫逆波兰表达式 前缀(波兰表达式) 中缀(对人来讲很好理解,对于计算机来讲就方便了,一般会把中缀表达式转换成后缀表达式) 后缀(逆波兰表达式) 计算过程 ...

最新文章

  1. 关于java.util.LinkedHashMap cannot be cast to ......的解决办法
  2. HTTP协议,之入门初尝
  3. promise 实现依次循环 请求数据
  4. MySql下视图的创建
  5. NYOJ 305 表达式求值
  6. 图像灰度变换及图像数组操作
  7. “宅家十大热销商品”榜单:确认过眼神,都是自己剪头发的人
  8. SQL Server查询执行计划–基础
  9. [030] 微信公众帐号开发教程第6篇-文本消息的内容长度限制揭秘(转)
  10. play另一个模板japid
  11. MapReduce编程模型简介和总结
  12. java pingfang,PingFang sc字体的使用
  13. python连接微信运动_用Python霸屏微信运动,横扫支付宝榜单 !
  14. oracle分组拼接
  15. 中国行政区边界线下载(省,市,区县、乡镇边界线)
  16. 挑战微软 + GitHub!谷歌联手 Replit,升级 AI 编程“神器”:曾拒绝微软 10 亿美元的收购...
  17. 全网最详细的渗透测试靶机实操步骤——vulnhub靶机实战(七)IMF【包含了sql注入,文件上传,gif图片木马制作,缓冲区溢出漏洞sploit等诸多知识点的靶机,超多干货】
  18. Elasticsearch常见报错和处理方法
  19. 电子邮件地址允许使用哪些字符?
  20. asp医院病历管理系统

热门文章

  1. linux在线汇编编译器,Linux 汇编 Hello World
  2. excel文件损坏修复绝招_修复数据工具大盘点,让你快速掌握电脑数据恢复的秘密武器...
  3. C# 客户端PDF文件打印方法大全
  4. 交互式计算机图形学 第六版 pdf,1交互式计算机图形学系统.pdf
  5. 数学分析(一)数列与数列极限
  6. STC89C52RC的AD7705读写实验(软件SPI)
  7. Python调用graphviz绘制结构化图形网络
  8. 浅谈存储之SAN基本概念
  9. python写连点脚本_python鼠标连点器-测试版
  10. Client network socket disconnected before secure TLS connection was establishedView in Conso