计算四则运算表达式主要是分两步运算
第一步是把 中缀表达式 转换成 后缀表达式。参考大一下期学的 《数据结构与算法分析--C语言描述》3.3.3 教材,完成下列代码:
static String mid_to_suf(String str) { Stack<Character> s = new Stack<Character>(); String suf = new String(); HashMap<Character, Integer> map = new HashMap<Character, Integer>(); map.put('+', 1); // 设置运算符的优先级 map.put('-', 1); map.put('*', 2); map.put('/', 2); map.put('(', 3); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); while (c >= '0' && c <= '9') { suf += c; if (i + 1 < str.length()) i++; c = str.charAt(i); } suf += ' '; if (c == '=') break; if (c == ' ') suf += c; else { if (s.isEmpty()) s.push(c); else { while (!s.isEmpty()) { char op = s.peek(); if (op == '(') break; if (map.get(op) < map.get(c)) break; else { s.pop(); suf += op; } } s.push(c); } } } while (!s.isEmpty()) suf += s.pop(); return suf; }