我如何在 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
对象就足够了,一个用于值,一个用于运算符。列表非常适合收集未知长度的值,因为与数组不同,列表的大小可以增长。
如果您要实现运算符优先级,则需要构建表达式树,但听起来您还没有做到。
我正在为我的 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
对象就足够了,一个用于值,一个用于运算符。列表非常适合收集未知长度的值,因为与数组不同,列表的大小可以增长。
如果您要实现运算符优先级,则需要构建表达式树,但听起来您还没有做到。