如何在while循环中保存单个输入并在结束时打印它们?

时间:2016-03-21 15:21:41

标签: java input while-loop java.util.scanner calculator

我正在为我的java类创建一个计算器,我们必须输入一个左操作数,从5个选项的菜单中选择一个运算符(其中一个是退出)并选择一个右操作数。它应该继续从菜单和右操作数中询问操作符,直到用户选择5(退出选择)并将“resultSoFar”保存为左操作数,这样它就可以继续运行。

最后,该程序应该打印整个总和。因此,例如,最终结果可能看起来像“3/4 + 6 - 2 =无论什么”(没有理解数学)。不要担心它不按顺序进行,它仍然在课堂上,而老师并不介意。

我无法弄清楚如何保存单个输入,以便最后打印出来。这是代码:

import java.util.Scanner;

public class JavaAssignment5 
{
    public static void main(String[] args)
    {
        Scanner stdIn = new Scanner(System.in);

        String operator = "";
        double leftOp = 0.0;
        double rightOp;
        double resultSoFar = leftOp;


        System.out.print("Please choose the left operand : ");
        leftOp = stdIn.nextDouble();
        System.out.println();

        while (!(operator.equals("1") || operator.equals("2") || operator.equals("3") || operator.equals("4") || operator.equals("5"))) 
        {
            System.out.println("1 -> Multiplication");
            System.out.println("2 -> Division");
            System.out.println("3 -> Addition");
            System.out.println("4 -> Subtraction");
            System.out.println("5 -> Exit");
            System.out.println();

            while (!(operator.equals("1") || operator.equals("2") || operator.equals("3") || operator.equals("4") || operator.equals("5"))) 
            {
            System.out.println("Please choose a operator from the menu above : ");
            String throwAway = stdIn.nextLine();
            operator = stdIn.nextLine();
            }

            System.out.println("Please choose a right operand : ");
            rightOp = stdIn.nextDouble();

            if (operator.equals("1"))
            {
                resultSoFar = leftOp * rightOp;
            }

            if (operator.equals("2"))
            {
                resultSoFar = leftOp / rightOp;
            }

            if (operator.equals("3"))
            {
                resultSoFar = leftOp + rightOp;
            }

            if (operator.equals("4"))
            {
                resultSoFar = leftOp - rightOp;
            }
        }

        System.out.println(resultSoFar);
    }



}

1 个答案:

答案 0 :(得分:2)

如果你只需要显示最终的等式(例如3 / 4 + 6 - 2),那么就可以在一个StringBuilder中构建该字符串。

如果最后需要单独的值和运算符,那么两个ArrayList对象就足够了,一个用于值,一个用于运算符。列表适用于收集未知长度的值,因为与数组不同,它们的大小可以增长。

如果你已经到了实现运算符优先级的地步,那么需要构建一个表达式树,但听起来你还没有。