为什么需要在 Java while 循环中使用 "break" 和 "continue" 语句?
Why is it necessary to use "break" and "continue" statements in Java while loops?
当我创建一个 Java while 循环并在其中包含 if/else 语句(包括在下面)时,为什么需要使用 break;
和 continue;
语句来继续代码?
我注意到,如果没有 break;
语句,它只会无限显示 else
结果。
例如,为什么代码运行直接来自else
语句?
我知道 break 和 continue 是做什么的,我只是需要更好地了解它们的用法。
public class TheClass {
public static void main(String[] args) {
int x = 0;
while (x <= 21){
if(x < 21){
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
continue;
}else{
System.out.println("You may drink because you are " + x + " years old.");
break;
}
}
}
}
简单:else 分支不更新x
。
因此你陷入了死循环。 break breaks 防止无限循环。
你从 x
开始是 0。0 小于 21 - 因此你增加 x 的代码永远不会被采用。您可能想将条件更改为
if (x <= 21)
一般情况下:您使用 continue/break 以防简单的计数或 while(some-condition) 是不够的。含义:这些关键字只是为了允许跳跃 "out of loop execution"。立即结束循环(break);或者通过中止 current 循环体并希望进入下一个循环迭代(继续)。
"break" 的一个很好的例子是:
Value searchResult = null;
for (Value bar : items) {
if (bar.equals(whatever)) {
searchResult = bar;
break;
}
}
找到匹配项时无需比较其他元素 - 因此可以中断(目标是找到 第一个 匹配项)。
int x = 0;
这很正常,这里没什么可看的。
while (x <= 21) {
好的,现在我们知道整个时间 x
小于或等于 21,while 循环就会执行。这意味着 x
将取值为 22 以退出循环。
```
if(x < 21){
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
continue;
}
```
现在,当且仅当我们处于 while 循环的前 21 次迭代(即 x < 21
)时,进行打印语句并递增 x
。在这里,continue
实际上没有做任何事情,可以删除而不会产生任何不良后果。这是因为这个循环中唯一的其他语句是一个 else 循环,所以无论如何它都不会执行。
```
else { // If x >= 21
System.out.println("You may drink because you are " + x + " years old.");
break;
}
```
现在,如果 x
不小于 21,我们将打印并退出循环。之所以需要这个break,是因为x在第一次进入循环的时候会是21。然而,while 循环中的条件允许 x=21
-- 结果,我们必须手动 break 退出循环。
这可以简单地用 x++;
代替,我认为这是更好的做法。
Why is it Necessary To Use “break” and “continue” Statements In Java
While Loops?
没有。
仅当您的语句不足以涵盖您要应用的逻辑时,才需要使用 break
和 continue
。
这并不意味着它一定不好,但有时它会被过度使用,没有它代码可能会更简单。
例如看你的代码。
1)continue
无奈
在 if
语句之后,循环继续。这正是 continue
的作用。
如果您在 else
语句之后有一些语句并且您不会执行,那将是有意义的,但事实并非如此。
2) break
也可以删除。
你中断是因为 while
条件没有考虑循环结束。
虽然 x < 21
、x
递增,但由于 x
之后保持此值,所以
while (x <= 21){
永远是真的。
所以你必须想办法退出方块while
以避免无限循环。
你这样做 break
在 else
.
如果 while
条件处理退出条件,您可以在没有 break
的情况下编写相同的逻辑。
您可以通过引入一个 boolean
变量来做到这一点,该变量提供了一种在达到预期年龄时退出循环的自然方式:
int x = 0;
boolean isAgeReached = false;
while (!isAgeReached) {
if (x < 21) {
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
}
else {
System.out.println("You may drink because you are " + x + " years old.");
isAgeReached = true;
}
}
或者更简单:
int x = 0;
while (x < 21) {
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
}
System.out.println("You may drink because you are " + x + " years old.");
当我创建一个 Java while 循环并在其中包含 if/else 语句(包括在下面)时,为什么需要使用 break;
和 continue;
语句来继续代码?
我注意到,如果没有 break;
语句,它只会无限显示 else
结果。
例如,为什么代码运行直接来自else
语句?
我知道 break 和 continue 是做什么的,我只是需要更好地了解它们的用法。
public class TheClass {
public static void main(String[] args) {
int x = 0;
while (x <= 21){
if(x < 21){
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
continue;
}else{
System.out.println("You may drink because you are " + x + " years old.");
break;
}
}
}
}
简单:else 分支不更新x
。
因此你陷入了死循环。 break breaks 防止无限循环。
你从 x
开始是 0。0 小于 21 - 因此你增加 x 的代码永远不会被采用。您可能想将条件更改为
if (x <= 21)
一般情况下:您使用 continue/break 以防简单的计数或 while(some-condition) 是不够的。含义:这些关键字只是为了允许跳跃 "out of loop execution"。立即结束循环(break);或者通过中止 current 循环体并希望进入下一个循环迭代(继续)。
"break" 的一个很好的例子是:
Value searchResult = null;
for (Value bar : items) {
if (bar.equals(whatever)) {
searchResult = bar;
break;
}
}
找到匹配项时无需比较其他元素 - 因此可以中断(目标是找到 第一个 匹配项)。
int x = 0;
这很正常,这里没什么可看的。
while (x <= 21) {
好的,现在我们知道整个时间 x
小于或等于 21,while 循环就会执行。这意味着 x
将取值为 22 以退出循环。
```
if(x < 21){
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
continue;
}
```
现在,当且仅当我们处于 while 循环的前 21 次迭代(即 x < 21
)时,进行打印语句并递增 x
。在这里,continue
实际上没有做任何事情,可以删除而不会产生任何不良后果。这是因为这个循环中唯一的其他语句是一个 else 循环,所以无论如何它都不会执行。
```
else { // If x >= 21
System.out.println("You may drink because you are " + x + " years old.");
break;
}
```
现在,如果 x
不小于 21,我们将打印并退出循环。之所以需要这个break,是因为x在第一次进入循环的时候会是21。然而,while 循环中的条件允许 x=21
-- 结果,我们必须手动 break 退出循环。
这可以简单地用 x++;
代替,我认为这是更好的做法。
Why is it Necessary To Use “break” and “continue” Statements In Java While Loops?
没有。
仅当您的语句不足以涵盖您要应用的逻辑时,才需要使用 break
和 continue
。
这并不意味着它一定不好,但有时它会被过度使用,没有它代码可能会更简单。
例如看你的代码。
1)continue
无奈
在 if
语句之后,循环继续。这正是 continue
的作用。
如果您在 else
语句之后有一些语句并且您不会执行,那将是有意义的,但事实并非如此。
2) break
也可以删除。
你中断是因为 while
条件没有考虑循环结束。
虽然 x < 21
、x
递增,但由于 x
之后保持此值,所以
while (x <= 21){
永远是真的。
所以你必须想办法退出方块while
以避免无限循环。
你这样做 break
在 else
.
如果 while
条件处理退出条件,您可以在没有 break
的情况下编写相同的逻辑。
您可以通过引入一个 boolean
变量来做到这一点,该变量提供了一种在达到预期年龄时退出循环的自然方式:
int x = 0;
boolean isAgeReached = false;
while (!isAgeReached) {
if (x < 21) {
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
}
else {
System.out.println("You may drink because you are " + x + " years old.");
isAgeReached = true;
}
}
或者更简单:
int x = 0;
while (x < 21) {
System.out.println("You cannot drink because you are only " + x + " years old.");
x++;
}
System.out.println("You may drink because you are " + x + " years old.");