我有一些书中的示例代码,作者总是在if结尾处使用continue。
示例:
int a = 5;
if(a == 5)
{
// some code
continue;
}
现在对我来说这没有任何意义。 可能背后有某种质量管理推理,或者我只是错过了一些更重要的观点?
答案 0 :(得分:21)
也许代码片段在循环内(for/while/do...while
)?否则不将continue
置于条件语句中是否有意义。
事实上,孤立的continue
(例如:一个没有嵌套在循环语句中的某个地方)会在编译时产生continue cannot be used outside of a loop
错误。
答案 1 :(得分:5)
继续用于转到循环的下一次迭代。所以这样的事情会有意义。现在你可以使用任何条件(你的a==5
可以突破),以及你想要的任何业务逻辑(我的是一个愚蠢的,人为的例子)。
StringBuilder sb = new StringBuilder();
for(String str : strings) {
sb.append(str);
if(str.length() == 0) continue; // next loop if empty
str = str.substring(1);
sb.append(str);
if(str.length() == 0) continue; // next loop if empty
str = str.substring(1);
sb.append(str);
if(str.length() == 0) continue; // next loop if empty
sb.append(str);
}
答案 2 :(得分:2)
有时强制循环的早期迭代是有用的。也就是说,您可能希望继续运行循环,但在此特定迭代中停止处理其正文中的其余代码。实际上,这是一个刚刚经过循环体的循环到循环的结尾。 continue语句执行此类操作。在while和do-while循环中,continue语句使控件直接传递给控制循环的条件表达式。在for循环中,控制首先进入for语句的迭代部分,然后进入条件表达式。对于所有三个循环,任何 中间代码被绕过。这是一个示例程序,它使用continue来在每行上打印两个数字: //展示继续
class Continue
{
public static void main(String args[])
{
for(int i=0; i<10; i++)
{
System.out.print(i + " ");
if (i%2 == 0)
continue;
System.out.println("");
}
}
}
此代码使用%运算符来检查我是否是偶数。如果是,则循环继续而不打印换行符。以下是该计划的输出:
0 1
2 3
4 5
6 7
8 9
答案 3 :(得分:0)
通常,continue用于转义深度嵌套的循环,或者仅仅是为了清晰(有争议)。
有时候,“继续”也会用作占位符,以便制作空loop body clearer。
for (count = 0; foo.moreData(); count++)
continue;
这是一个品味问题,我个人不会继续使用。