package com.ali.exercises01_03;
import edu.princeton.cs.algs4.Stack;
import edu.princeton.cs.algs4.StdIn;
public class EvaluatePostfix {
/**
* @param argsa
*/
public static void main(String[] args) {
Stack<Double> vals = new Stack<>(); //操作数
while(!StdIn.isEmpty()) {
//因为是字符串原因,输入一个数就得space一下,保证是多个字符串,而不是一个字符串
//like:1 2 + 3 4 - 5 6 - * *
String s = StdIn.readString();
double d = 0.0;
if(s.equals("+")) {
d = vals.pop() + vals.pop();
vals.push(d);
}else if( s.equals("-")) {
d = vals.pop() - vals.pop();
vals.push(d);
}else if( s.equals("*")) {
d = vals.pop() * vals.pop();
vals.push(d);
}else if( s.equals("/")) {
d = vals.pop() /+ vals.pop();
vals.push(d);
}else {
vals.push(Double.parseDouble(s));
}
System.out.println(d);
}
System.out.println( vals.pop());
}
}
程序如上所示,vals.pop()的打印问题,第四版书中Dijkstra算法也是类似,
好了,知道答案了...ctrl + Z。