这里是我的代码的模式:继续;用于跳过许多循环
while (..)
{
for (...; ...;...)
for(...;...;...)
if ()
{
...
continue;
}
}
什么会做下去?他只会让第二个循环迭代一次,不是? 我希望能达到这个时间,有可能吗?
谢谢!
这里是我的代码的模式:继续;用于跳过许多循环
while (..)
{
for (...; ...;...)
for(...;...;...)
if ()
{
...
continue;
}
}
什么会做下去?他只会让第二个循环迭代一次,不是? 我希望能达到这个时间,有可能吗?
谢谢!
在这里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
}
我认为这是我需要;) 非常感谢!据我所知,不应该使用转到 – Flo 2011-01-28 10:10:31
只有continue语句不可能。继续和断开语句只影响它们嵌套的最内层循环。
您可以设置一个变量并在外部循环中检查它。或者在for语句中重新组织IF语句和break条件。
while (..)
{
for (...; ...;...)
{
for(...;...;...)
if ()
{
...
skipLoop = true
}
if (skipLoop)
continue;
}
}
希望这有助于!
噢:( 我希望有一种方式存在,但...顺便说一句,谢谢;) – Flo 2011-01-28 09:25:56
不可能直接为continue;
不仅延续当前循环的执行,去外环你能做的唯一的事情就是设置一些标志,并检查它在外环
continue
或break
始终是最内环,其接受一个continue
或break
。在这种情况下,它是代码中最低的for
循环。
while (..)
{
for (...; ...;...)
for(...;...;...)
if ()
{
...
goto superpoint;
}
superpoint:
//dosomething
}
您应该设置一个变量来确定何时需要离开循环。
while (..)
{
bool goToWhile = false;
for (...; ... && !goToWhile; ...)
for (...; ... && !goToWhile; ...)
if ()
{
...
goToWhile = true;
}
}
拿出更好的名字虽然;)
你应该避免内循环可言,他们使代码不可读和高度容易出错。 – onof 2011-01-28 09:33:23
@onof我不同意,至少部分。有时候“内部循环”真的是解决问题的最好方法(有时候另一种控制抽象或方法调用更好)。然而,我相信循环结构应该总是使用一个`{}`,因为它有助于缩进,并且避免了在循环中混淆内容 - 不在一个循环的问题。 – 2011-01-28 09:47:20