我有这个程序要求用户输入一个值并将其计算为用户喜欢的初始值为零,然后它会询问用户再次执行什么过程并要求用户再次输入一个值并计算它是实例的最后一个值,问题是每当它要求用户输入值时,它会将其计算为零而不是最后一个条目。请帮我找到错误:
程序必须有两个类,一个用于计算器,另一个用于方法:
第一类
public class MainClass {
public static void main(String[] args) {
MemoryCalculator calc = new MemoryCalculator();
calc.getCurrentValue();
displayMenu();
}
public static int displayMenu() {
Scanner input = new Scanner(System.in);
int choice;
do {
System.out.println("Menu");
System.out.println("1.Add");
System.out.println("2.Subtract");
System.out.println("3.Multiply");
System.out.println("4.Divide");
System.out.println("5.Clear");
System.out.println("6.Quit");
System.out.println("");
System.out.println("What would you like to do?");
choice = input.nextInt();
if (choice > 6 || choice < 1) {
System.out.println("Sorry," + choice + " was not an option");
return displayMenu();
}
} while (choice > 6 || choice < 1);
MemoryCalculator calc = new MemoryCalculator();
if (choice == 5) {
calc.clear();
return 0;
} else if (choice == 6) {
System.out.println("Goodbye! ");
System.exit(0);
}
System.out.println("What is the second number? ");
double operand2 = input.nextDouble();
switch (choice) {
case 1:
calc.add(operand2);
break;
case 2:
calc.subtract(operand2);
break;
case 3:
calc.multiply(operand2);
break;
case 4:
calc.divide(operand2);
break;
}
return displayMenu();
}
public static double getOperand(String prompt) {
return 0;
}
}
第二课
public class MemoryCalculator {
private double currentValue;
public double getCurrentValue() {
System.out.println("The current value is " + currentValue);
return 0;
}
public void add(double operand2) {
currentValue = currentValue + operand2;
getCurrentValue();
}
public void subtract(double operand2) {
currentValue -= operand2;
getCurrentValue();
}
public void multiply(double operand2) {
currentValue *= operand2;
getCurrentValue();
}
public void divide(double operand2) {
if (operand2 == 0) {
System.out.println("Sorry, you can not divide by 0");
}
currentValue /= operand2;
getCurrentValue();
}
public void clear() {
currentValue = 0;
getCurrentValue();
}
}
答案 0 :(得分:1)
您可能希望将最后一个值保存在“calc”中。我看到3个错误。
在“do”循环开始之前移动此行。这将使其不会重置此变量/类中的值。
MemoryCalculator calc = new MemoryCalculator();
将结束“while”循环线移动到方法的底部(在return语句之前)。它似乎只是起作用,因为在你的return语句中你再次调用你的方法...见#3。您还需要在while语句“choice&gt; 6&amp;&amp; choice&lt; 1”中将“或”更改为“and”运算符
} while(选择&gt;&amp;&amp; choice&lt; 1);
在你的displayMenu方法中更改return语句,因为你不希望它在无限循环中调用自己...现在do while循环是固定的。
返回displayMenu();
到这个
返回选择;