为什么有必要使用" break"和"继续"循环中的Java语句?

时间:2017-08-04 18:12:55

标签: java while-loop break continue

当我创建一个带有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;
            }
        }

    }

}

3 个答案:

答案 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”语句是必要的   循环?

它没有。
仅当您的陈述不足以涵盖您要应用的逻辑时,才需要使用breakcontinue
它并不意味着它必然是坏的,但有时它会被过度使用,如果没有它,代码可能会更简单。
例如,查看代码。

1)continue无奈 在if语句之后,循环继续。这正是continue的内容。 如果你在else语句之后有一些语句并且你不会执行但事实并非如此,那将是有意义的。

2)break也可以删除 你因为while条件没有考虑循环结束而中断 虽然x < 21x会增加,但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++;代替,我认为这是更好的做法。