我正在为我的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
),则可以在单个过程中构建该String StringBuilder
。
如果最后需要单独的值和运算符,则两个ArrayList
对象就足够了,一个用于值,一个用于运算符。列表很适合收集未知长度的值,因为与数组不同,列表的大小可能会增加。
如果您要实现运算符优先级,则需要构建一个表达式树,但是听起来您还不存在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句