Algs4-1.3.11计算后序表达式的值
1.3.11编写一段程序EvaluatePostfix,从标准输入中得到一个后序表达式,求值并打印结(将上一程序中得到的输出用管道传递给这一段各程序可以得到和Evaluate相同的行为)。
答:
public class EvaluatePostfix
{
public static void main(String[] args)
{
Stack<Double> s=new Stack<Double>();
double v1;
double v2;
double result;
while(!StdIn.isEmpty())
{
String item=StdIn.readString();
if(item.equals("+") )
{
v2=s.pop();
v1=s.pop();
result=v1+v2;
s.push(result);
}
else if(item.equals("-") )
{
v2=s.pop();
v1=s.pop();
result=v1-v2;
s.push(result);
}
else if(item.equals("*") )
{
v2=s.pop();
v1=s.pop();
result=v1*v2;
s.push(result);
}
else if(item.equals("/") )
{
v2=s.pop();
v1=s.pop();
result=v1/v2;
s.push(result);
}
else
{
StdOut.println(item);
s.push(Double.parseDouble(item));}
}//end while
StdOut.printf("result=%f\n",s.peek());
}//end main
}//end class