package edu.princeton.cs.algs4.ch13; import edu.princeton.cs.introcs.StdIn; import edu.princeton.cs.introcs.StdOut; /** * Created by zqhxuyuan on 15-3-1. */ public class Evaluate { public static void main(String[] args) { Stack<String> ops = new Stack<>(); Stack<Double> vals = new Stack<>(); while(!StdIn.isEmpty()){ String s = StdIn.readString(); if(s.equals("(")); else if(s.equals("+")) ops.push(s); else if(s.equals("-")) ops.push(s); else if(s.equals("*")) ops.push(s); else if(s.equals("/")) ops.push(s); else if(s.equals(")")) { String op = ops.pop(); double 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; else if(op.equals("sqrt")) v = Math.sqrt(v); vals.push(v); } else vals.push(Double.parseDouble(s)); } StdOut.println(vals.pop()); } }