手を動かして学ぶ Java入門 (continue文)
環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の continue文について学びます。
10分くらいで、さくっと終わる記事をめざしています。
シリーズ一覧
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
続きは近日公開予定!
はじめに
この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/11/5 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)
実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。
詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。
前回のおさらい
前回の記事 では break文について学びました。
break文とは、繰り返し制御文 (while文や for文など) を終わらせるために使う「文」です。
一般的には、次のように if文とともに使うことが多いでしょう。
while (条件式1) {
... 処理A ...
if (条件式2) {
break;
}
... 処理B ...
}
continue文とは
continue文とは、while文のループ処理を途中で スキップ させるための「文」です。
break文とは違い while文は終わりません。
通常、while文は、
while (条件式) {
ループ文1
ループ文2
ループ文3
・
・
・
}
上記の条件式を 満たしている 間はループ文を実行し続けます。
ループ文は上から順番に実行されていきます。
しかし、例えば …
- ループ文2を実行したあと、条件によってはループ文3以降はスキップしたい
と思うことがあるかもしれません。
そんなときに使えるのが continue文です。
continue文は、
continue;
と書きます。
「文」なので、末尾にセミコロン (;) が必要です。
一般的には、次のように if文とともに使うことが多いでしょう。
while (条件式1) {
... 処理A ...
if (条件式2) {
continue;
}
... 処理B ...
}
continue文を使うと、処理B は実行されずに、while の条件式1 の判定までスキップします。
フローチャート図にすると次のようになります。
(フローチャートとは、処理の流れを図にしたものです)
それでは、プログラムで実際の動きを確認してみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
a = 1
a = 3
a = 5
と表示されたら成功です。
【補足】
繰り返し制御文には、while文の他にも
- for文
- 拡張for文 (for-eachループ文)
があります。
もちろん、for文や 拡張for文でも continue文は使えます。
コードの解説
int a = 0;
while (a < 5) {
a = a + 1;
if (a % 2 == 0) {
continue;
}
System.out.println("a = " + a);
}
それでは、先ほどのコードを少しずつ見ていきましょう。
まずは、変数 a を 0 で初期化します。
int a = 0;
次は while文です。
while (a < 5) {
...
}
条件式は a < 5 となります。
つまり、変数 a が 5 より小さければループは続く、ということですね。
ループ文の最初では、変数 a に 1 を足します。
while (a < 5) {
a = a + 1;
^^^^^^^^^^ <--- この部分!
...
}
変数 a は、最初 0 だったので、
a = 0 + 1
となり、変数 a に 1 が代入されます。
次は if文です。
while (true) {
...
if (a % 2 == 0) {
...
}
...
}
if 文の条件式は a % 2 == 0 です。
% 記号は、割り算の「余り」を計算します。
数値を 2 で割って余りが 0 であれば偶数、余りが 1 であれば奇数と判定できます。
つまり、この条件式では、変数 a が偶数であるかを判定しているわけですね。
現在、変数 a は 1 なので奇数です。
よって、if文の { ... } は実行されません。
最後に、println メソッドで変数 a を表示します。
while (a < 5) {
...
if (...) {
...
}
System.out.println("a = " + a);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- この部分!
}
結果は "a = 1" と表示されます。
さて、ループ文が終わったので、while文の先頭に戻ります。
変数 a は 1 なので、まだ a < 5 を満たしています。よってループは続きます。
while (a < 5) {
...
}
続いて、変数 a に 1 を足します。
while (a < 5) {
a = a + 1;
^^^^^^^^^^ <--- この部分!
...
}
変数 a は 1 だったので、変数 a に 2 が代入されます。
さあ、変数 a は偶数なので、if文の条件式を満たします。
よって、continue文が実行されます。
while (true) {
...
if (a % 2 == 0) {
continue;
^^^^^^^^^ <---- ★大事なポイント!
}
...
}
通常、if文が終われば、if文の「次の文」が実行されます。
しかし、continue文を実行すると、以降の処理は すべてスキップ します。
while (a < 5) {
...
if (a % 2 == 0) {
continue; <--- この部分が実行されると…
}
System.out.println("a = " + a);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- この部分はスキップされる!
}
スキップした結果、処理は while文の先頭に戻ります。
変数 a は 2 なので、a < 5 を満たしています。よってループは続きます。
そして 変数 a に 1 を足して … と繰り返していきます。
変数 a が、
- 偶数のとき : if文で continue文 が実行される。
- 奇数のとき : continue文は実行されない。(変数 a を println メソッドで表示する)
となるわけですね。
結果、
a = 1
a = 3
a = 5
と表示されます。
応用問題
【問題】
プログラムを実行すると、
a = 1
a = 4
a = 7
と「出力」へ表示されるようにしてください。
プログラム中で書き換えてよいのは1か所です。
if文の条件式である ### の部分です。
if (###) {
^^^ <--- ★この部分
continue;
}
例えば a % 2 != 0 のような感じで、書き換えてみてください。
それでは、下のプログラムの # の箇所を書き換えて「実行(Ctrl-Enter)」してみましょう。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
無事に、
a = 1
a = 4
a = 7
と出力されましたでしょうか?
もし解けなかった場合は、下記の回答例をご参照ください。
回答例
【コード】
public class Main {
public static void main(String[] args) {
int a = 0;
while (a < 8) {
a = a + 1;
if (a % 3 != 1) {
continue;
}
System.out.println("a = " + a);
}
}
}
【出力】
a = 1
a = 4
a = 7
まとめ
continue文とは、while文のループ処理を途中で スキップ させるための「文」です。
一般的には、次のように if文とともに使うことが多いでしょう。
while (条件式1) {
... 処理A ...
if (条件式2) {
continue;
}
... 処理B ...
}
continue文を使うことにより、ループ処理を簡潔に書けることもあります。
有効に活用してしていきたいですね。
次回は「手を動かして学ぶ Java入門 (for文)」になります。
関連記事
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)