Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在while循环中保存单个输入并在最后打印它们?_Java_Input_While Loop_Java.util.scanner_Calculator - Fatal编程技术网

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

Java 如何在while循环中保存单个输入并在最后打印它们?,java,input,while-loop,java.util.scanner,calculator,Java,Input,While Loop,Java.util.scanner,Calculator,我正在为我的java类制作一个计算器,在这里我们必须输入一个左操作数,从5个选项的菜单中选择一个操作符(其中一个是要退出的),然后选择一个右操作数。它应该一直从菜单中请求一个运算符和一个右操作数,直到用户选择5(退出选项)并将“resultSoFar”保存为左操作数,这样它就可以继续进行下去 最后,程序应该打印整个总和。例如,一个最终结果可能看起来像“3/4+6-2=随便什么”(不必费心数学)。不要担心它没有按顺序进行,现在上课时间还早,老师也不介意 我不知道如何让它保存单个输入,以便在最后打印

我正在为我的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);
    }



}

如果您只需要显示最终方程式(例如,
3/4+6-2
),则在运行时在单个
StringBuilder
中构建该字符串

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


如果要实现运算符优先级,则需要构建表达式树,但听起来还没有。是否允许使用
ArrayList
?不,我们只讨论了while、do和for循环。“这就是为什么这么痛苦的原因。”PaulBoddington很抱歉,我没有给你贴标签,这是该网站的新成员,我回复了你上面的评论。我还是被通知了。如果你没有标记任何人,我认为该网站会自动通知前一个人。这是一种痛苦。您应该按照答案中的建议,使用一个可变对象,如
ArrayList
StringBuilder
,来实现这一点。如果您不被允许,这确实是一件痛苦的事情。我无法使用ArrayList,我们只讨论了for、while和do循环。我想他想要的是我们将输入保存在一个字符串中,这个字符串会不断地添加到循环中。@ZKenn您可以只使用一个字符串就可以做到这一点,但是
StringBuilder
专门用于以增量方式构建字符串,因此它更有效。现在,在循环中执行
expr=expr+''+运算符+''+值
可能还可以,但是如果使用
StringBuilder
,性能会更好。谢谢!我将研究stringbuilder,以便学习它,或者至少了解将来如何使用它。我感谢你的帮助!