fac*_*_14 296 java continue keyword
我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用.
continue关键字?Dus*_*tin 503
continue有点像goto.你熟悉break吗?相比之下,更容易思考它们:
break 终止循环(跳转到它下面的代码).
continue 在当前迭代的循环中终止代码处理的其余部分,但继续循环.
Dio*_*lis 410
continue没有标签的语句将从最内层while或do循环的条件以及最内层循环的更新表达式重新执行for.它通常用于提前终止循环的处理,从而避免深度嵌套的if语句.在下面的示例continue中将获取下一行,而不在循环中处理以下语句.
while (getNext(line)) {
if (line.isEmpty() || line.isComment())
continue;
// More code here
}
Run Code Online (Sandbox Code Playgroud)
使用标签,continue将从具有相应标签的循环重新执行,而不是最内层循环.这可以用于逃避深层嵌套循环,或者仅为了清楚起见.
有时continue也用作占位符,以使空循环体更清晰.
for (count = 0; foo.moreData(); count++)
continue;
Run Code Online (Sandbox Code Playgroud)
C和C++中也存在没有标签的相同语句.Perl中的等价物是next.
不建议使用这种类型的控制流程,但如果您这样选择,也可以使用continue模拟有限形式的控制流程goto.在以下示例中,continue将重新执行空for (;;)循环.
aLoopName: for (;;) {
// ...
while (someCondition)
// ...
if (otherCondition)
continue aLoopName;
Run Code Online (Sandbox Code Playgroud)
Gan*_*ant 99
我们来看一个例子:
int sum = 0;
for(int i = 1; i <= 100 ; i++){
if(i % 2 == 0)
continue;
sum += i;
}
Run Code Online (Sandbox Code Playgroud)
这将得到从1到100的奇数之和.
Vin*_*eet 28
如果你认为循环体是一个子程序,continue就有点像return.C中存在相同的关键字,并且用于相同的目的.这是一个人为的例子:
for(int i=0; i < 10; ++i) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
这将只打印出奇数.
Tom*_*ble 17
通常,我看到continue(和break)警告代码可能会使用一些重构,特别是如果whileor for循环声明没有立即显示.return在方法的中间也是如此,但原因略有不同.
正如其他人已经说过的那样,continue移动到循环的下一次迭代,同时break移出封闭循环.
这些可以是维护时间炸弹,因为在continue/ break和循环之间没有直接链接它继续/打破除了上下文之外; 添加一个内循环或将循环的"内脏"移动到一个单独的方法中,你有continue/ break失败的隐藏效果.
恕我直言,最好使用它们作为最后的手段,然后确保它们的使用在循环的开始或结束时紧密组合在一起,以便下一个开发人员可以在一个屏幕中看到循环的"边界" .
continue,break和return(除了方法结束时的One True Return)都属于"隐藏GOTO"的一般类别.它们将循环和函数控制置于意外的位置,最终导致错误.
小智 5
Java中的“继续”表示转到当前循环的末尾,表示:如果编译器看到循环中的继续,它将进入下一个迭代
示例:这是用于打印从1到10的奇数的代码
只要看到继续进入下一个迭代,编译器将忽略打印代码
for (int i = 0; i < 10; i++) {
if (i%2 == 0) continue;
System.out.println(i+"");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480974 次 |
| 最近记录: |