これが私のコードのスキーマです:
while (..)
{
for (...; ...;...)
for(...;...;...)
if ( )
{
...
continue;
}
}
続きはどうする?彼は 2 番目のループを 1 回だけ反復させますよね? 間に合わせたいのですが、可能ですか?
ありがとう!
here は、最もcontinue
近いループに影響を与えます - あなたの 2 番目のfor
. に直接ジャンプするには、次の 2 つの方法があります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
}
変数を設定して、いつループを終了する必要があるかを決定する必要があります。
while (..)
{
bool goToWhile = false;
for (...; ... && !goToWhile; ...)
for (...; ... && !goToWhile; ...)
if ( )
{
...
goToWhile = true;
}
}
でも、もっといい名前を考えてください ;)
while (..)
{
for (...; ...;...)
for(...;...;...)
if ( )
{
...
goto superpoint;
}
superpoint:
//dosomething
}
現在のループの実行を継続するだけなので、直接はできませんcontinue;
。外側のループに移動するには、いくつかのフラグを設定して外側のループで確認するしかありません。
continue
orbreak
は常に or を受け入れる最も内側のループ用continue
ですbreak
。この場合、これはfor
コード内の最下位のループです。
continue 文だけではできません。continue ステートメントと break ステートメントは、ネストされている最も内側のループにのみ影響します。
変数を設定して、外側のループで確認できます。または for 文の IF 文とブレーク条件を見直してください。
while (..)
{
for (...; ...;...)
{
for(...;...;...)
if ( )
{
...
skipLoop = true
}
if (skipLoop)
continue;
}
}
お役に立てれば!