“嗨,阿米戈!

“嗨,艾莉。”

“你已经研究过循环,这很酷。”

“我同意!现在我完全不知道没有他们该如何生活。”

“有时候你可以不用它们……但更多时候你会需要它们。今天我们要说的是当你需要提前跳出循环时的情况。”

“你的意思是,当继续循环的条件为真,但你还需要退出循环?”

“没错!有时候你听起来好像你已经是一名程序员了。无论如何,要提前跳出一个循环,你可以使用 break 语句看看下面的例子:

代码 解释
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
该程序将从键盘读取一行,直到您输入"exit"

“我明白了。程序从控制台读取行。如果输入"exit",则isExit变量变为true,循环条件将为,循环将结束。”!isExitfalse

”没错。所以,Java有一个特殊的break语句,可以让你简化这样的逻辑。如果一个break语句在循环内部执行,那么循环立即结束。程序会开始执行循环后面的语句。语句非常简短:

break;

“下面是如何使用break语句重写我们刚刚讨论的示例:

代码 解释
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
该程序将从键盘读取一行,直到您输入"exit"

“也许我会记住的,我觉得它会派上用场。”

“但这break不是唯一允许您控制循环行为的 Java 语句。Java 也有该continue语句。如果您continue在循环内执行语句,循环的当前迭代将提前结束。”

“迭代是什么意思?”

“循环迭代是循环体的一次执行。continue语句中断循环的当前迭代,但与break语句不同的是,它不会结束循环本身。语句也很简短:

continue;

“那么,continue如果我们想‘跳过’循环的某些迭代的执行,那么可以在循环中使用该语句?”

break“没错,你明白和的区别吗continue?如果你需要在20个不重复的数字中找到一个7,你会用什么样的循环和循环中断语句?

“嗯……我会检查所有的数字,如果我找到 7,那么我会执行一个break。”

“如果您需要显示从120除了可被 整除的数字怎么办7?”

“好吧,在这里我可能需要continue,因为我不想退出循环。但我还是不太明白。”

“让我告诉你如何解决这个问题。这就是这段代码的样子。”

代码 解释
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
该程序显示从1到 的数字20。如果数字可以被整除7(余数除以7 0 ,那么我们将跳过显示数字。

“你为什么这么怀疑地看着我,艾莉?这里有什么陷阱吗?”

“你不会被愚弄的,阿米戈!事实上,这段代码不会正常工作。它会显示前 6 位数字,然后i永远停留在数字上7。毕竟,该continue语句跳过了另外两个语句:System.out.println(i)i++。作为结果,一旦我们达到 value 7,变量i将停止变化,我们将陷入无限循环。我这样写代码是为了说明一个非常常见的错误。”

“我们如何解决它?”

“这里有两个选择:”

选项 1:i在执行之前更改continue,但之后i % 7

选项 2:i始终在循环开始时递增。但那时i的起始值必须是0.

选项1 选项 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

“太好了!我会尽量不犯这个错误的。”

“我会记住你的承诺的!”