ループ処理は、「for (初期化; 継続条件; 変化)」の継続条件を満たしていなくても終了させることができます。その終了には「break」という命令を使います。このbreakが出て来た所で、ループ処理は強制的に終了します。
for (int i = 0; i < 100; i ++) {
break; // ここでループ処理が終わる
}
breakは、条件分岐と組み合わせることで威力を発揮します。
たとえば、1から100までの数字を足していき、100以上になったら終了するといった処理も簡単に書くことができます。
int a = 0; for (int i = 1; i <= 100; i ++) { a += i; System.out.println(i + " " + a); if (a >= 100) { // 変数aの値が100以上なら // ループ処理を終わる break; } } System.out.println("結果 " + a);
1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55 11 66 12 78 13 91 14 105 結果 105
ループ処理は入れ子になることを以前紹介しました。この入れ子のループ処理の場合、内側のループの中を処理中に、外側のループを抜けたいような場合も出てきます。
int a = 0; for (int i = 1; i <= 10; i ++) { for (int j = 1; j <= 10; j ++) { a += i * j; if (a >= 100) { // 変数aの値が100以上なら // 外側のループ処理を抜けたい } } }
こういった場合は、外側のループ処理に「ラベル」を付けて、breakに、どのループを抜けるのか指定します。
ラベルは「ラベル名:(コロン)」と書きます。これで、内側のループ処理の最中であっても、外側のループ処理を抜けることができます。
int a = 0; outer: for (int i = 1; i <= 10; i ++) { for (int j = 1; j <= 10; j ++) { a += i * j; System.out.println(i + " " + j + " " + a); if (a >= 100) { // 変数aの値が100以上なら // 外側のループ処理を抜けたい break outer; } } } System.out.println("結果 " + a);
1 1 1 1 2 3 1 3 6 1 4 10 1 5 15 1 6 21 1 7 28 1 8 36 1 9 45 1 10 55 2 1 57 2 2 61 2 3 67 2 4 75 2 5 85 2 6 97 2 7 111 結果 111