次のようなネストされたループ構造があります:
for (Type type : types) {
for (Type t : types2) {
if (some condition) {
// Do something and break...
break; // Breaks out of the inner loop
}
}
}
では、両方のループから抜け出すにはどうすればよいのでしょうか? 同様の質問を見てきましたが、Java に特有のものはありませんでした。ほとんどが goto を使用していたため、これらの解決策を適用できませんでした。
内部ループを別のメソッドに配置したくありません。
ループを返したくありません。break すると、ループ ブロックの実行が終了します。
ベストアンサー1
他の回答者と同様に、ループを別の方法に配置し、その時点で戻るだけで反復を完全に停止できるようにすることをお勧めします。この回答は、質問の要件を満たす方法を示しているだけです。
外側のループにラベルを使用することができますbreak
。例:
public class Test {
public static void main(String[] args) {
outerloop:
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
if (i * j > 6) {
System.out.println("Breaking");
break outerloop;
}
System.out.println(i + " " + j);
}
}
System.out.println("Done");
}
}
次のように出力されます:
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
Breaking
Done