Javaマルチループからジャンプする方法
5286 ワード
私たちは一般的にbreakとcuntinueで単一のループを制御しますが、次のような複数のループがある場合は、次のようにします.
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
for (int k=0; k<10; k++) {
}
}
}
次のようなニーズがあれば、一般的にどうしますか?
(1)j+k>5ですべてのサイクルが終了する.
(2)j+k>5のときに最背面の2層サイクルを終了する.
(3)j+k>5で最背面のレイヤループを終了し、現在の第2のレイヤループをスキップするが、残りの第2のレイヤループを実行し続ける.
1、異常を投げてサイクル全体を飛び出す.
たとえば、j+k>5ですべてのループを終了する場合に使用します.
try{
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
for (int k=0; k<10; k++) {
if (j + k > 5){
throw new Exception();
}
}
}
}
}
catch (Exception e) { }
2、条件識別子を使用して循環を制御する
例えば、j+k>5で最背面の2層サイクルが終了すると、最初の方法はできません.この方法を使用します.
boolean firstLoop = true;
boolean secondLoop = true;
boolean thirdLoop = true;
for (int i=0; i<10; i++) {
if (!firstLoop){
break;
}
for (int j=0; j<10; j++) {
if (!secondLoop){
break;
}
for (int k=0; k<10; k++) {
if (!thirdLoop){
break;
}
if (j + k > 5){
thirdLoop = false;
secondLoop = false;
}
}
}
}
3、循環にタグを付けて、循環をより正確に制御する
例えば、j+k>5のときに最背面のレイヤループを終了し、現在の第2のレイヤループをスキップするが、残りの第2のレイヤループを実行し続ける.これは第2の方法でも実現できますが、コードがより複雑に見える可能性があります.3つ目の方法を使用すると、これを簡単に明らかにすることができます.コードは次の通りです(secondLoopはタグです).
for (int i=0; i<10; i++) {
secondLoop:
for (int j=0; j<10; j++) {
for (int k=0; k<10; k++) {
if (j + k > 5){
continue secondLoop;
}
}
}
}