import java.util.*; //括号不能省略 //输入字符串中不能有大于9的数字 //例如 字符串(1+10) 则10会被拆分为字符串"1"和字符串"0" 输出结果1 public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()) { String str = cin.next(); String strs[]=str.split(""); Stack<String> ops = new Stack<>();//运算符栈 Stack<Integer> vals = new Stack<>();//数字栈 for (int i = 0; i < str.length(); i++) { if (strs[i].equals("(")) ; else if (strs[i].equals("+")) ops.push(strs[i]); else if (strs[i].equals("-")) ops.push(strs[i]); else if (strs[i].equals("*")) ops.push(strs[i]); else if (strs[i].equals("/")) ops.push(strs[i]); else if (strs[i].equals(")")) { String op = ops.pop(); int v = vals.pop(); if (op.equals("+")) v = vals.pop() + v; else if (op.equals("-")) v = vals.pop() - v; else if (op.equals("*")) v = vals.pop() * v; else if (op.equals("/")) v = vals.pop() / v; vals.push(v); } else vals.push(Integer.valueOf(strs[i])); } System.out.println(vals.pop()); } cin.close(); } }
Dijkstra 双栈算数表达式求值算法
最新推荐文章于 2020-12-15 22:53:45 发布