3

これが私のコードのスキーマです:

while (..)
{
   for (...; ...;...)
        for(...;...;...)
            if ( )
            {
                 ...
                 continue;
            }
} 

続きはどうする?彼は 2 番目のループを 1 回だけ反復させますよね? 間に合わせたいのですが、可能ですか?

ありがとう!

4

6 に答える 6

5

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
}
于 2011-01-28T09:23:23.760 に答える
2

変数を設定して、いつループを終了する必要があるかを決定する必要があります。

while (..)
{
    bool goToWhile = false; 

    for (...; ... && !goToWhile; ...)
        for (...; ... && !goToWhile; ...)
            if ( )
            {
                ...
                goToWhile = true; 
            }
} 

でも、もっといい名前を考えてください ;)

于 2011-01-28T09:25:53.373 に答える
2
while (..)
{
   for (...; ...;...)
        for(...;...;...)
            if ( )
            {
                 ...
                 goto superpoint;
            }
superpoint:
//dosomething
} 
于 2011-01-28T09:23:58.663 に答える
1

現在のループの実行を継続するだけなので、直接はできませんcontinue;。外側のループに移動するには、いくつかのフラグを設定して外側のループで確認するしかありません。

于 2011-01-28T09:23:11.483 に答える
1

continueorbreakは常に or を受け入れる最も内側のループ用continueですbreak。この場合、これはforコード内の最下位のループです。

于 2011-01-28T09:23:25.150 に答える
0

continue 文だけではできません。continue ステートメントと break ステートメントは、ネストされている最も内側のループにのみ影響します。

変数を設定して、外側のループで確認できます。または for 文の IF 文とブレーク条件を見直してください。

while (..)
{
   for (...; ...;...)
   {
        for(...;...;...)
            if ( )
            {
                 ...
                 skipLoop = true
            }
         if (skipLoop)
             continue;
    }
} 

お役に立てれば!

于 2011-01-28T09:22:24.493 に答える