我的 do while 循环在一次迭代后停止。我该如何继续下去?
Posted
技术标签:
【中文标题】我的 do while 循环在一次迭代后停止。我该如何继续下去?【英文标题】:My do while loop is stopping after one iteration. how do I keep it going? 【发布时间】:2020-04-20 07:08:21 【问题描述】:我的代码在一次迭代后终止,即使quit
为真。
import java.util.*;
public class calc
public static boolean quit;
public static void main(String[] args)
keepGoing();
public static void keepGoing()
do
Scanner s = new Scanner(System.in);
String input = s.nextLine();
String inputLower = input.toLowerCase();
int findQuit = inputLower.indexOf("quit");
if (findQuit != -1)
boolean quit = false;
while (quit == true);
System.out.println("OTHER CODE GOES IN PLACE OF THIS PRINTLN");
【问题讨论】:
如果您没有为静态quit
指定值,它将为假(请参阅this)。然后它永远不会在您的代码中更新为 true。
【参考方案1】:
您必须将 quit 变量定义为 true。因为布尔变量的默认值为 false。
public static boolean quit = true;
您需要更改此代码:
if (findQuit != -1)
boolean quit = false;
收件人:
if (findQuit != -1)
quit = false;
因为不需要再定义相当变量。
无需使用等号来计算布尔值。所以把代码改成:
while (quit == true);
System.out.println("OTHER CODE GOES IN PLACE OF THIS PRINTLN");
收件人:
while (quit);
System.out.println("OTHER CODE GOES IN PLACE OF THIS PRINTLN");
完整代码:
import java.util.*;
public class calc
public static boolean quit = true;
public static void main(String[] args)
keepGoing();
public static void keepGoing()
do
Scanner s = new Scanner(System.in);
String input = s.nextLine();
String inputLower = input.toLowerCase();
int findQuit = inputLower.indexOf("quit");
if (findQuit != -1)
quit = false;
while (quit);
System.out.println("OTHER CODE GOES IN PLACE OF THIS PRINTLN");
【讨论】:
【参考方案2】:你必须先初始化变量quit。 在定义时或之后执行,但必须在 do while 循环开始之前。
public static boolean quit = true;
【讨论】:
【参考方案3】:boolean
的默认值为false
。所以改变
public static boolean quit;
到
public static boolean quit = true;
另外您目前仅使用 shadowed 变量将其设置为 false
。改变
if (findQuit != -1)
boolean quit = false;
到
if (findQuit != -1)
quit = false;
或去掉if
,直接给boolean
点赞
quit = (findQuit == -1);
最后,无需检查boolean
== true
。改变
while (quit == true);
到
while (quit);
【讨论】:
以上是关于我的 do while 循环在一次迭代后停止。我该如何继续下去?的主要内容,如果未能解决你的问题,请参考以下文章
Python入门教程第57篇 循环进阶之模拟do…while语句