gpt4 book ai didi

java - 在 Java 的 do-while 循环中将变量重置为零

转载 作者:行者123 更新时间:2023-11-30 03:24:29 42 4
gpt4 key购买 nike

我正在研究一个使用 do-while 循环和 switch 语句的示例。我基本上需要的是累积数字,并根据用户输入进行加、减、乘或除(迷你计算器类型)。

问题是当我要求用户返回主菜单时,程序不会重置循环之前的值。结果始终是前一个结果。

这是代码,它会更好地解释它。

import java.util.Scanner;
public class SwitchLoopNumbers{
public static void main(String[] args){

Scanner scan = new Scanner(System.in);
int numbers=0;
int result=0;
int option;
boolean quit = true;
String done="";
do{
System.out.println("CALCULATOR MENU");
System.out.println("********** ****");
System.out.println("\n1. Add");
System.out.println("2. Substract");
System.out.println("3. Multiply");
System.out.println("4. Divide");

System.out.println();
System.out.print("Enter your option >> ");
option = scan.nextInt();

while(quit){

switch(option){

case 1:

System.out.print("Enter numbers, type 0 when done >> ");
numbers = scan.nextInt();
if(numbers==0)
quit=false;
result +=numbers;
break;




case 2:
System.out.print("Enter numbers, type 0 when done >> ");
numbers = scan.nextInt();
result -=numbers;
if(numbers==0)
quit=false;
break;

}

}





System.out.println("The total is: "+result);
System.out.println("Back to main menu ? y/n ");
scan.nextLine();
done = scan.nextLine();
//I did reset numbers and result here to zero but it did not work
}



while("y".equalsIgnoreCase(done));
System.out.println("Thank you for using calculator");

}
}

最佳答案

这里发生了一些事情。为了简洁地回答你的问题,这是因为你在重新循环之前没有重新分配变量。由于您不重新分配 result 并退出,因此 quit 为 false,因此它关闭循环,并且 result 不变,因此它会打印相同的结果。试试这个:

 System.out.println("The total is: "+result);
System.out.println("Back to main menu ? y/n ");
scan.nextLine();
done = scan.nextLine();
numbers = 0;
result = 0;
quit = true;

我认为这是解决您问题的最直接的解决方案。

编辑:我还想补充一点,使用 quit 作为 while 条件似乎有点违反直觉。如果我看到一个条件退出是正确的,我的假设是它将打破循环,而不是继续循环。您可以通过指定更有意义的变量名称来使代码更清晰一些。因此,不要说这样的话:

 boolean quit = true;
while(quit) {
//do stuff
if (some_condition) {
quit = false;
//close loop
}
}

这可能更清楚一点:

boolean quit = false;
while(!quit) {
//do stuff
if (some_condition) {
quit = true;
//close loop
}
}

只是一般性建议。

关于java - 在 Java 的 do-while 循环中将变量重置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603960/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com