决定今晚开始看算法4。虽然正值考试期间,但是总要有个开始不是么?
书上基础部分的例子,很不错的思路,改动的地方是把原书中的if嵌套改成了switch。
运行结果
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| import java.util.Stack; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut;
public class Evaluate { public static void main(String[] args){ Stack<String> ops = new Stack<String>(); Stack<Double> vals = new Stack<Double>(); StdOut.println("% java Evaluate"); while (!StdIn.isEmpty()){ String s = StdIn.readString(); switch (s) { case "(": break; case "+": case "-": case "*": case "/": case "sqrt": ops.push(s); break; case ")": String op = ops.pop(); double v = vals.pop(); switch (op) { case "+": v = vals.pop() + v; break; case "-": v = vals.pop() - v; break; case "*": v = vals.pop() * v; break; case "/": v = vals.pop() / v; break; case "sqrt": v = Math.sqrt(v); break; default: break; } vals.push(v); break; default: vals.push(Double.parseDouble(s)); break; } } StdOut.println(vals.pop()); }
}
|