我正在为我的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);
}
}
答案 0 :(得分:2)
如果你只需要显示最终的等式(例如3 / 4 + 6 - 2
),那么就可以在一个StringBuilder
中构建该字符串。
如果最后需要单独的值和运算符,那么两个ArrayList
对象就足够了,一个用于值,一个用于运算符。列表适用于收集未知长度的值,因为与数组不同,它们的大小可以增长。
如果你已经到了实现运算符优先级的地步,那么需要构建一个表达式树,但听起来你还没有。