继续;用于跳过许多循环
Posted
技术标签:
【中文标题】继续;用于跳过许多循环【英文标题】:continue; used to skip many loops 【发布时间】:2011-01-28 09:20:29 【问题描述】:这是我的代码架构:
while (..)
for (...; ...;...)
for(...;...;...)
if ( )
...
continue;
接下来会做什么?他只会让第二个循环迭代一次,不是吗? 我希望它到达while,可以吗?
谢谢!
【问题讨论】:
你应该完全避免内部循环,它们使代码不可读并且极易出错。 @onof 我不同意,至少部分不同意。有时“内部循环”确实是解决问题的最佳方法(有时另一个控制抽象或方法调用更好)。但是,我相信循环构造应该始终使用
,因为它有助于缩进并避免将循环中的内容混淆为循环的问题。跨度>
【参考方案1】:
这里的continue
会影响最近的循环 - 您的第二个for
。直接跳转while
有两种方式:
goto
,虽然有时“被认为是有害的”,但这可以说是它仍然存在的主要原因
return
为了说明后者:
while (..)
DoSomething(..);
void DoSomething(..)
for (...; ...;...)
for(...;...;...)
if ( )
...
return;
和前者:
while (..)
for (...; ...;...)
for(...;...;...)
if ( )
...
goto continueWhile;
continueWhile:
// needs to be something after a label
【讨论】:
我认为这是我需要的 ;) 非常感谢!【参考方案2】:while (..)
for (...; ...;...)
for(...;...;...)
if ( )
...
goto superpoint;
superpoint:
//dosomething
【讨论】:
据我记忆,不应该使用 goto。 这几乎就是 goto 存在的原因,如果它不是用来使用的,为什么它在语言中? @Pabuc 它不应该被轻率地使用 - 但在这里它可以很好地完成工作。比检查每个级别的标志要简单得多。另请参阅 MSDN example 打破嵌套循环 我不是在谈论你使用它的方式。永远不应该使用 Goto。不知道我在哪里读过它,但作者有一个很好的理由。在 atm 中搜索它,如果我能找到它会发布它 好的,我找不到它,但是,我仍然会将此作为方法并在找到时返回而不是 goto。也许这只是我,但我从不使用 goto - 从不。【参考方案3】:您应该设置一个变量来确定何时需要离开循环。
while (..)
bool goToWhile = false;
for (...; ... && !goToWhile; ...)
for (...; ... && !goToWhile; ...)
if ( )
...
goToWhile = true;
想出更好的名字;)
【讨论】:
【参考方案4】:不可能直接因为continue;
只会继续执行当前循环,要进入外循环,你唯一能做的就是设置一些标志并在外循环中检查它
【讨论】:
【参考方案5】:continue
或break
始终用于接受continue
或break
的最内层循环。在这种情况下,它是代码中最低的 for
循环。
【讨论】:
【参考方案6】:仅使用 continue 语句是不可能的。 Continue 和 break 语句只影响它们嵌套的最内层循环。
您可以设置一个变量并在外循环中检查它。或者在for语句中重新组织IF语句和break条件。
while (..)
for (...; ...;...)
for(...;...;...)
if ( )
...
skipLoop = true
if (skipLoop)
continue;
希望这会有所帮助!
【讨论】:
以上是关于继续;用于跳过许多循环的主要内容,如果未能解决你的问题,请参考以下文章
在 Ruby 中,如何跳过 .each 循环中的循环,类似于“继续”[重复]