Java 如何在while循环中保存单个输入并在最后打印它们?
我正在为我的java类制作一个计算器,在这里我们必须输入一个左操作数,从5个选项的菜单中选择一个操作符(其中一个是要退出的),然后选择一个右操作数。它应该一直从菜单中请求一个运算符和一个右操作数,直到用户选择5(退出选项)并将“resultSoFar”保存为左操作数,这样它就可以继续进行下去 最后,程序应该打印整个总和。例如,一个最终结果可能看起来像“3/4+6-2=随便什么”(不必费心数学)。不要担心它没有按顺序进行,现在上课时间还早,老师也不介意 我不知道如何让它保存单个输入,以便在最后打印它们。代码如下: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=随便什么”(不必费心数学)。不要担心它没有按顺序进行,现在上课时间还早,老师也不介意 我不知道如何让它保存单个输入,以便在最后打印
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,以便学习它,或者至少了解将来如何使用它。我感谢你的帮助!