前缀/中缀/后缀表达式;
前缀后缀中缀表达式:
后缀表达式的代码实现:
package Demo1.stackArray; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Stack; public class PolandNocation { //后缀表达式:逆波兰表达式 public static void main(String[] args) { //创建一个表达式(3+4)*5-6 = 29 String suffixExpression = "3 4 + 5 * 6 -"; for (int i = 0; i < suffixExpression.length(); i++) { } //切割表达式,存入集合 PolandNocation polandNocation = new PolandNocation(); List<String> list = polandNocation.getArray(suffixExpression); // list.forEach(System.out::print); System.out.println(list); //计算 System.out.println(); try { int calculate = polandNocation.calculate(list); System.out.println("计算的结果是:--》" + calculate); } catch (Exception e) { System.out.println(e.getMessage()); } finally { System.out.println("退出"); } } //压栈 public int calculate(List<String> lis) { //构建一个栈 Stack<String> stack = new Stack<>(); for (String item : lis) { if (item.matches("\\d+")) {//匹配多位数 stack.push(item); } else { int num2 = Integer.parseInt(stack.pop()); int num1 = Integer.parseInt(stack.pop()); int result = 0; if (item.equals("+")) { result = num1 + num2; } else if (item.equals("-")) { result = num1 - num2; } else if (item.equals("*")) { result = num1 * num2; } else if (item.equals("/")) { result = num1 / num2; } else { throw new RuntimeException("运算符!!!异常"); } stack.push("" + result); } } return Integer.parseInt(stack.pop()); } //切割字符串(),存入集合(ArrayList) public List<String> getArray(String suffixExpression) { //把数据切割装入ArrayList ArrayList<String> arrayList = new ArrayList<>(); String[] split = suffixExpression.split(" "); for (String number : split) { arrayList.add(number); } return arrayList; } }
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
分类:
Java数据结构与算法
标签:
Java数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南