我第一次看到这个关键字,想知道有人能否解释一下它的作用。
continue
关键字是什么?- 它是如何工作的?
- 在什么情况下会使用它?
continue
有点像goto
。你熟悉break
吗?通过对比来思考它们更容易理解:
break
终止循环(跳转到下面代码执行)。
continue
终止当前迭代中的循环代码的后续处理,但是继续该循环的下一次迭代。
没有标签的 continue
语句会从最内层的 while
或 do
循环条件重新执行,并从最内层的 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;
让我们看一个例子:
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
)是警告代码可能需要重构的信号,特别是如果while
或for
循环声明不在视野范围内。对于方法中的return
,原因略有不同,但道理相同。
正如其他人已经说过的那样,continue
会跳过当前迭代并继续下一个迭代,而break
会退出包含它的循环。
这些语句可能造成维护时间炸弹,因为continue
/break
和它所在的循环之间没有直接联系,只有上下文关系;添加内部循环或将循环的"内脏"移到单独的方法中,就会导致continue
/break
失效的隐藏影响。
在我看来,最好将它们视为最后的手段,并确保它们的使用紧密地分组在循环的开头或结尾,这样下一个开发者就可以在一屏中看到循环的"边界"。
continue
、break
和return
(除了方法的唯一真正返回值)都属于"隐藏的GOTO"的一般类别。它们将循环和函数控制放在意想不到的位置,最终导致错误。
for (int i = 0; i < 10; i++) {
if (i%2 == 0) continue;
System.out.println(i+"");
}
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%的奇数...那么你错了!
Continue 是 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);
}
}
}
考虑一个If Else条件语句。continue语句执行条件内的内容并跳到下一次循环或条件,而break则会离开循环。请看下面的程序:
'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 跳出循环.
如果你用break替换continue(在if之后),它只会打印aa和跳出循环。
如果条件"bb"等于ss得到满足: 对于Continue: 它跳到下一次迭代,即“cc”.equals(ss)。 对于Break: 它跳出循环并打印“跳出循环.”
break
之前。 - Ted Delezene在循环控制结构中,如果需要立即跳转到下一个迭代,则使用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.
[number 5 is skip]