-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEvaluate.java
28 lines (26 loc) · 857 Bytes
/
Evaluate.java
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
import edu.princeton.cs.algs4.*;
public class Evaluate{
public static void main(String[] args){
Stack<String> ops = new Stack<String>();
Stack<Double> val = new Stack<Double>();
while(!StdIn.isEmpty()){
String s = StdIn.readString();
if (s.equals("(")) ;
else if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/") || s.equals("sqrt"))
ops.push(s);
else if(s.equals(")")){
String op = ops.pop();
double v = val.pop();
if (op.equals("+")) { v = val.pop() + v; }
else if(op.equals("-")) { v = val.pop() - v; }
else if(op.equals("*")) { v = val.pop() * v; }
else if(op.equals("/")) { v = val.pop() / v; }
else if(op.equals("sqrt")) { v = Math.sqrt(v); }
val.push(v);
}
else
val.push(Double.parseDouble(s));
}
StdOut.println(val.pop());
}
}