Breakについては前項「 JavaのBreak文の詳細解説」で学びましたが、ここではContinue文を中心に説明します。 Break ステートメントと同様に、通常の制御フローを中断します。 continue ステートメントは、最も内側のループの先頭に制御を移します。
continue 文は、ループ本体内の残りの文をスキップして次のループを強制的に実行するもので、その機能はループを終了する、つまりループ本体内の未実行の文をスキップしてループを終了するかどうかを判断することです。次回ループを実行します。
continue ステートメントはBreak ステートメントに似ていますが、ループの本体内でのみ使用できます。これと Break ステートメントの違いは、 continue はループ ステートメントを中断せず、現在の反復のループを終了し、次の反復に入る点です。簡単に言うと、Continue はループ ステートメントを無視する現在のループです。
注: continue ステートメントは while ステートメント、for ステートメント、または foreach ステートメントのループ本体内でのみ使用できます。それ以外の場所で使用すると構文エラーが発生します。
ループ本体で continue ステートメントをラベル付きまたはラベルなしで使用する方法は 2 つあります。構文形式は次のとおりです。
continue //不带标签
continue label //带标签,label是标签名
例を見てみましょう。コードは次のとおりです。
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < numbers.length; i++) {
if (i == 3) {
continue;
}
System.out.println("Count is: " + i);
}
上記プログラムコードでは、条件i==3の場合に continue 文を実行すると、 continue 文によりループが終了し、ループ本体内の continue 以降の文は実行されず、次のループが実行されます。出力結果には 3 がありません。プログラムを実行した結果は次のようになります。
Count is: 0
Count is: 1
Count is: 2
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
ラベルを含む continue ステートメントのコード例は次のとおりです。
public static void main(String[] args) {
label1: for (int x = 0; x < 5; x++) {
for (int y = 5; y > 0; y--) {
if (y == x) {
continue label1;
}
System.out.println(x+","+y);
}
}
System.out.println("ゲームオーバー!");
}
デフォルトでは、 continue は最も近い内側のループ (コードの 3 行目の for ループ) からのみジャンプします。コードの 2 行目の外側のループからジャンプしたい場合は、ラベル label1 を外側のループ、5 行目の continue 文 後からラベル label1 を指定し、条件が成立して continue 文が実行されると外側のループから抜け出すようにします。
プログラムを実行した結果は次のようになります。
0,5
0,4
0,3
0,2
0,1
1,5
1,4
1,3
1,2
2,5
2,4
2,3
3,5
3,4
4,5ゲームオーバー!
次の例では、x == y がスキップされるため、出力はありません。
1,1
2,2
3,3
4,4