这将继续导致嵌套的 for 循环做啥?
Posted
技术标签:
【中文标题】这将继续导致嵌套的 for 循环做啥?【英文标题】:What will this continue cause the nested for-loop to do?这将继续导致嵌套的 for 循环做什么? 【发布时间】:2013-10-13 06:38:46 【问题描述】:我已经搜索过 SO,可以找到解决类似主题的问题,但没有针对这个特定问题和语言的问题。在阅读了一些问答并没有找到答案后,我搜索了java、for-loop 和continue,结果为零。
我在一次大学测验中被问到这个问题:
如果我有:
int n = 3;
for (int i = 1; i <= n; i++)
System.out.print(" x ");
for (int j = 1; j <= n; j++)
System.out.println(" x ");
continue;
//no content here
continue 语句后面没有任何内容;使用continue
对这个循环有何影响?它是否会导致循环是否继续迭代的第二个循环中断?
【问题讨论】:
这样设置continue
是没有意义的。删除它会给你同样的行为。基本上,它用于继续当前循环的迭代,而不进一步移动。
***.com/questions/389741/continue-keyword-in-java
【参考方案1】:
不带标签的continue
语句将从条件重新执行最里面的while 或do 或循环,并从更新表达式重新执行最里面的for 循环。它通常用于提前终止循环的处理,从而避免深度嵌套的 if 语句。
因此,对于您的程序,continue
的键值没有多大意义。它被用作一种逃避的东西。例如:
aLoopName: for (;;)
// ...
while (someCondition)
// ...
if (otherCondition)
continue aLoopName;
说,如果你修改你的程序:
int n = 3;
for (int i = 1; i <= n; i++)
System.out.print(" x ");
for (int j = 1; j <= n; j++)
if(j%2!=0)
System.out.println(" x ");
continue;
else
break;
这将打破 j=2 的 inner for 循环。希望你能理解。 :)
【讨论】:
您的问题似乎含糊不清。放在内部 for 循环中的continue
关键字没有意义。即使您删除关键字,它也不会产生任何影响。最好了解continue
的使用方式和时间,不要在任何地方随意使用。【参考方案2】:
如果continue
下有代码,那将是一个死代码(无法访问的代码)。
你写它的方式,它已经是最后一行了,它没有任何效果。如果没有continue;
,循环将继续。
这两段代码的效果是一样的:
for(int i = 0; i < 10; i++)
// .. code ..
for(int i = 0; i < 10; i++)
// .. code ..
continue;
但是,下面的 sn-p 有无法访问的代码:
for(int i = 0; i < 10; i++)
// .. code ..
continue;
// .. unreachable code ..
【讨论】:
【参考方案3】:你的问题的答案:
使用 continue 对这个循环有何影响?是否会导致循环是否继续迭代的第二个循环中断?
是:
第二个循环不会中断,它会继续迭代。 break
关键字用于中断循环。
编辑
假设你有for
循环:
for(int i = 0; i < 5; i++)
continue;
continue
in for 执行for
循环(i++
)的语句继续下一次迭代。
在其他循环中,while
或dowhile();
不会是这样,可能会导致无限循环。
【讨论】:
以上是关于这将继续导致嵌套的 for 循环做啥?的主要内容,如果未能解决你的问题,请参考以下文章