当我创建一个带有if / else语句的Java while循环(包括在下面)时,为什么有必要使用break;
和continue;
语句来继续代码?
我注意到,如果没有break;
语句,它只会无限地显示else
结果。
例如,为什么代码直接来自else
语句?
我知道休息和继续做什么,我只需要更好地了解它们的用法。
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;
}
}
}
}
答案 0 :(得分:2)
简单:else分支不更新x
。
因此,你陷入无休止的循环中。休息时间可以防止无休止的循环。
您从x
开始为0. 0小于21 - 因此您的代码增加x永远不会被采用。您可能希望将条件更改为
if (x <= 21)
一般情况下:如果简单的计数或者(某些条件)不够,则使用continue / break。含义:这些关键字只是为了允许跳转和循环执行&#34;。通过立即结束循环(中断);或者通过中止当前循环体并希望进行下一次循环迭代(继续)。
&#34;打破&#34;的一个很好的例子是:
Value searchResult = null;
for (Value bar : items) {
if (bar.equals(whatever)) {
searchResult = bar;
break;
}
}
找到匹配项时无需比较其他元素 - 因此可以中断(当找到第一个匹配为目标时)。
答案 1 :(得分:2)
为什么在Java中使用“break”和“continue”语句是必要的 循环?
它没有。
仅当您的陈述不足以涵盖您要应用的逻辑时,才需要使用break
和continue
。
它并不意味着它必然是坏的,但有时它会被过度使用,如果没有它,代码可能会更简单。
例如,查看代码。
1)continue
无奈
在if
语句之后,循环继续。这正是continue
的内容。
如果你在else
语句之后有一些语句并且你不会执行但事实并非如此,那将是有意义的。
2)break
也可以删除
你因为while
条件没有考虑循环结束而中断
虽然x < 21
,x
会增加,但x
会保持此值,所以
while (x <= 21){
永远是真的。
所以你必须找到一种方法退出块while
以避免无限循环
您在break
。{/ p>中执行了else
如果break
条件处理退出条件,则可以在没有while
的情况下编写相同的逻辑
您可以通过引入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.");
答案 2 :(得分:0)
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
)时,创建一个print语句并增加x
。在这里,continue
实际上并没有做任何事情,并且可以在没有任何不良后果的情况下删除。这是因为此循环中唯一的其他语句是else循环,因此它不会执行。
```
else { // If x >= 21
System.out.println("You may drink because you are " + x + " years old.");
break;
}
```
现在,如果x
不小于21,我们将打印并退出循环。这个中断的必要原因是因为当它首次进入循环时x将为21。但是,while循环中的条件允许x=21
- 因此,我们必须手动从循环中断开以退出。
这可以简单地用x++;
代替,我认为这是更好的做法。