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

posted @ 2018-10-25 13:53  修电脑的龙生  阅读(209)  评论(0编辑  收藏  举报