34

以下のコードのように使用すると、最初に一致がある場合break、ループ内rowの残りは繰り返されませんが、colループはどうですか?

それでも 0 から 7 の間で反復しますか? そこでも使い道はbreakありますか?

for (int col = 0; col < 8; col ++)
    for (int row = 0; row < 8; row ++)
        if (check something)
        {
            //Then do this;
            break;
        }
4

13 に答える 13

3
nameHere:
for (yourForLoop) {
    for (anotherLoop) {
        if(condition) {
            break nameHere;
        }
    }
}
于 2013-05-27T09:17:09.187 に答える
1

Java では、break label.

outer: 
for (int col = 0; col < 8; col ++)
    for (int row = 0; row < 8; row ++)
        if (check something)
        {
            break outer;
        }
    }
}

そして、まだ誰も言及していないので、C# ではgoto label.

for (int col = 0; col < 8; col ++)
    for (int row = 0; row < 8; row ++)
        if (check something)
        {
            goto outside;
        }
    }
}
outside:
于 2013-05-27T21:18:31.690 に答える
1

他の答えに代わるもう1つの方法は、カウンターを最大に設定してループを停止することです。

for (int col = 0; col < 8; col ++)
    for (int row = 0; row < 8; row ++)
        if (check something)
        {
            // Use the col and row here.

            // Now we go for a totally break of all loops.
            // To stop the loops you can set that to the maximum
            // of your loop test.
            row = 8;
            col = 8;
        }

このトリックの利点は、追加のチェック コードを完全なループに追加しないことであり、それによって処理が大幅に高速化されます。

于 2013-05-27T19:44:51.667 に答える
1

「outerLoop」などのタグまたはラベルを使用する必要があると思います。これはJavaで機能します:

outerLoop:
    for (int col = 0; col < 8; col ++)
        for (int row = 0; row < 8; row ++)
            if (check something)
            {
                //Then do this;
                break outerLoop;
            }
于 2013-05-27T13:11:34.990 に答える
0

col = 8 に設定してから、内側のループにブレークします。

于 2013-05-27T11:28:01.340 に答える