什么是“continue”关键字以及它如何在Java中运行?

时间:2008-12-23 18:52:06

标签: java keyword continue

我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用。

  • 什么是continue关键字?
  • 它是如何运作的?
  • 何时使用?

13 个答案:

答案 0 :(得分:495)

continue有点像goto。你熟悉break吗?相比之下,更容易思考它们:

  • break终止循环(跳转到它下面的代码)。

  • continue终止当前迭代循环中代码的其余处理,但继续循环。

答案 1 :(得分:403)

没有标签的continue语句将从最里面的whiledo循环以及最里面的for循环的更新表达式重新执行。它通常用于提前终止循环的处理,从而避免深度嵌套的if语句。在以下示例中,continue将获取下一行,而不在循环中处理以下语句。

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

使用标签,continue将从具有相应标签的循环重新执行,而不是最内层循环。这可以用于逃避深层嵌套循环,或者仅为了清楚起见。

有时continue也会用作占位符,以使空循环体更清晰。

for (count = 0; foo.moreData(); count++)
  continue;

C和C ++中也存在没有标签的相同语句。 Perl中的等价物是next

不建议使用此类型的控制流程,但如果您这样选择,也可以使用continue来模拟有限形式的goto。在以下示例中,continue将重新执行空for (;;)循环。

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;

答案 2 :(得分:96)

让我们看一个例子:

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

这将获得从1到100的奇数之和。

答案 3 :(得分:27)

如果您将循环体视为子例程,continue有点像return。 C中存在相同的关键字,并且用于相同的目的。这是一个人为的例子:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

这将仅打印出奇数。

答案 4 :(得分:17)

通常,我会将continue(和break)视为代码可能使用某些重构的警告,尤其是while或{{1循环声明不会立即出现。对于方法中间的for也是如此,但原因略有不同。

正如其他人已经说过的那样,return移动到循环的下一次迭代,而continue移出封闭循环。

这些可以是维护定时炸弹,因为break / continue与循环之间没有直接链接,而是继续/打破除上下文之外的循环;添加一个内循环或将循环的“内脏”移动到一个单独的方法中,你会隐藏break / continue失败的效果。

恕我直言,最好将它们作为最后的手段,然后确保它们的使用在循环的开始或结束时紧密组合在一起,以便下一个开发人员可以看到循环的“边界”在一个屏幕上。

breakcontinuebreak(除方法结尾处的One True Return之外)都属于“隐藏GOTO”的常规类别。它们将循环和函数控制置于意外的位置,最终导致错误。

答案 5 :(得分:5)

Java中的

“continue”表示转到当前循环的结尾, 意味着:如果编译器在循环中看到继续,它将进入下一次迭代

示例:这是打印1到10的奇数的代码

编译器会在看到继续进入下一次迭代时忽略打印代码

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}

答案 6 :(得分:4)

如前所述,continue将跳过处理它下面的代码,直到循环结束。然后,如果此条件仍然成立(或者如果有一个标记,则表示循环的条件),您将被移动到循环条件并运行下一次迭代。 / p>

必须强调的是,在do - while的情况下,您会在continue之后移动到底部的条件,而不是在循环的开头。

这就是为什么很多人都无法正确回答以下代码会生成的内容。

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

*如果您的答案是aSet只包含奇数,那么只有100%......你错了!

答案 7 :(得分:3)

考虑If Else条件。 continue语句执行条件中的内容并退出条件,即跳转到下一个迭代或条件。但是休息离开了循环。 请考虑以下计划。 &#39;

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

它将打印:aa cc Out of the loop。

如果你使用break代替continue(After if。),它只会打印aa并退出循环

如果条件&#34; bb&#34;等于ss满意: 对于继续:它进入下一次迭代,即&#34; cc&#34; .equals(ss)。 对于Break:它来自循环并打印出#34; Out of the loop。 &#34;

答案 8 :(得分:2)

我参加派对有点晚了,但是......

值得一提的是continue对于空循环非常有用,其中所有工作都是在控制循环的条件表达式中完成的。例如:

while ((buffer[i++] = readChar()) >= 0)
    continue;

在这种情况下,读取字符并将其附加到buffer的所有工作都是在控制while循环的表达式中完成的。 continue语句用作循环不需要正文的可视指示符。

比同等的更明显:

while (...)
{ }

并且比使用如下的空语句更好(和更安全)的编码风格:

while (...)
    ;

答案 9 :(得分:1)

基本上在java中,continue是一个声明。因此,continue语句通常与循环一起使用以跳过当前迭代。

有关如何以及何时在java中使用它,请参阅下面的链接。它有例子说明。

https://www.flowerbrackets.com/continue-java-example/

希望它有所帮助!!

答案 10 :(得分:1)

继续是Java中的关键字,用于跳过当前迭代。

假设您要打印从1到100的所有奇数

public class Main {

    public static void main(String args[]) {

    //Program to print all odd numbers from 1 to 100

        for(int i=1 ; i<=100 ; i++) {
            if(i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }

    }
}
上面程序中的

continue 语句仅在 i 为偶数时跳过该迭代,而在 i 为奇数时打印该值。< / p>

继续语句仅使您跳出循环,而无需在循环内执行其余语句并触发下一次迭代。

答案 11 :(得分:1)

当您需要立即跳转到循环的下一个迭代时,在循环控制结构中使用continue语句。

它可以与for循环或while循环一起使用。 Java continue语句用于继续循环。它继续执行程序的当前流程,并在指定条件下跳过其余代码。

如果是内部循环,则仅继续内部循环。

我们可以在所有类型的循环中使用Java Continue语句,例如for循环,while循环和do-while循环。

例如

class Example{
    public static void main(String args[]){
        System.out.println("Start");
        for(int i=0; i<10; i++){
            if(i==5){continue;}
            System.out.println("i : "+i);   
        }
        System.out.println("End.");
    }
}

输出:

Start
i : 0
i : 1
i : 2
i : 3
i : 4
i : 6
i : 7
i : 8
i : 9
End.

[跳过5号]

答案 12 :(得分:0)

continue必须在循环内,否则会显示以下错误:

  

在循环外继续