我如何在 while 循环中保存单个输入并在最后打印它们?

How do i save individual inputs in a while loop and print them at the end?

我正在为我的 java class 制作一个计算器,我们必须在其中输入一个左操作数,从有 5 个选项的菜单中选择一个运算符(其中一个用于退出),然后选择一个正确的操作数。它应该一直从菜单中请求操作符和右操作数,直到用户选择 5(退出选项)并将 "resultSoFar" 保存为左操作数,这样它才能继续下去。

最后,程序应该打印整个总和。因此,例如,最终结果可能看起来像“3 / 4 + 6 - 2 = 任意”(不考虑数学)。不用担心没按顺序做,class还早,老师不介意。

我不知道如何获取它来保存各个输入,以便在最后打印它们。这是代码:

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);
    }



}

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

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

如果您要实现运算符优先级,则需要构建表达式树,但听起来您还没有做到。