什么是“继续”?关键字以及它如何在Java中工作?

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

  • continue关键字是什么?
  • 它是如何工作的?
  • 什么时候使用?
497944 次浏览

不带标签的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;

continue有点像goto。你熟悉break吗?我们可以比较容易地对比一下:

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

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

让我们来看一个例子:

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

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

如果你把循环体看作子例程,continue有点像return。同样的关键字在C中也存在,而且用途相同。这里有一个人为的例子:

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

这将只打印奇数。

一般来说,我认为continue(和break)是代码可能使用一些重构的警告,特别是在whilefor循环声明没有立即出现的情况下。方法中间的return也是如此,但原因略有不同。

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

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

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

continuebreakreturn(除了方法结束时的One True Return)都属于“隐藏goto”的一般类别。他们把循环和函数控制放在意想不到的地方,最终导致bug。

如前所述,continue将跳过处理它下面的代码,直到循环结束。然后,你被移动到循环的条件并运行下一次迭代,如果这个条件仍然成立(或者如果有一个标志,到指定的循环的条件)。

必须强调的是,在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%的奇数…你错了!

考虑If Else条件。continue语句执行条件中的内容,并跳出条件,即跳转到下一个迭代或条件。但是Break会离开循环。 考虑下面的程序。' < / p >

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(在If .之后),它将只是打印aa并退出循环

如果满足条件"bb" = ss: 对于继续:它进入下一个迭代,即。“cc”.equals (ss)。 Break:它从循环中出来,打印“out of the loop”。" < / p >

"continue"在Java中的意思是去当前循环的结束, 意思是:如果编译器在一个循环中看到continue,它将进入下一个迭代

示例:这是一个输出从1到10的奇数的代码

编译器将忽略打印代码,只要它看到继续进入下一个迭代

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

我来晚了一点,但是…

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

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

在这种情况下,读取字符并将其追加到buffer的所有工作都在控制while循环的表达式中完成。continue语句可以直观地指示循环不需要body。

它比同等的东西更明显一点:

while (...)
{ }

这绝对比使用空语句更好(也更安全)的编码风格:

while (...)
;

继续是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必须在循环中,否则会显示如下错误:

继续到循环之外

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 .跳过]