Kodrill

ループ文

Java SE Bronze (1Z0-818-JPN) 試験

while文の使用/for文および拡張for文の使用/do-while文の作成と使用/ループのネスティング

問題数
20 問
合格ライン
60%
実行して確認済み
18 問
この分野の要点を読む6 章・約 11 分。実行して確かめたコード例と、試験でよくある引っかけをまとめています

ログインなしで試す

無料の 5 問を、1問ごとに正誤と解説を見ながら解けます。解答は保存されません。

5 問を試す

無料登録して学習を記録する

学習履歴・ダッシュボード・ブックマーク・模試モードが使えます。

★ 残り 15 問はプレミアム会員限定です

無料プランでは先頭 5 問まで解けます。プレミアムなら全問題・苦手問題の復習・広告非表示が使えます。
料金プランを見る

問題と解説を見る (無料)

登録しなくても、次の5問は問題文と解説をそのまま読めます。

ループ文の要点

内容の確認日: 2026-10-03

この分野では、ループが「何回」「どの値で」実行されるかを正確に追えるかが問われます。出力を答える問題がほとんどなので、ループ変数の値を表に書き出しながら 1 回ずつ追うのが確実です。

出題項目は「while 文の使用」「for 文および拡張 for 文の使用」「do-while 文の作成と使用」「ループのネスティング」の 4 つです。特に、ネストしたループの中の break と continue がどのループに効くかは、よく問われます。

while 文

while (条件) { 処理 } は、先に条件を判定し、true の間だけ処理を繰り返します。条件はループの先頭で毎回判定されるので、条件が false になった回の値は処理されません。

Main.java
public class Main {    public static void main(String[] args) {        int x = 7;        while (x > 0) {            System.out.println(x);            x -= 3;        }    }}
ターミナル
java Main
7
4
1

x は 7 → 4 → 1 → -2 と変わり、-2 になったところで条件が false になってループを抜けます。ループの中で条件に使う変数を変え忘れると、条件がずっと true のままの無限ループになります。{ } を省略した while は直後の 1 文だけが対象になる点にも注意しましょう。

条件に false を直接書いた while (false) { ... } は、中身が絶対に実行されない「到達できないコード」とみなされ、コンパイルエラーになります。

do-while 文

do { 処理 } while (条件); は、先に処理を 1 回実行してから条件を判定します。そのため、条件が最初から false でも、処理は必ず 1 回は実行されます。while 文との一番の違いはここです。

Main.java
public class Main {    public static void main(String[] args) {        int n = 10;        while (n < 5) {            System.out.println("while: " + n);        }        do {            System.out.println("do-while: " + n);        } while (n < 5);    }}
ターミナル
java Main
do-while: 10

do-while 文は、最後の while (条件) の後ろにセミコロンが必要です。書き忘れるとコンパイルエラーになります (while 文や for 文の ) の後ろには付けません)。

for 文

for (初期化; 条件; 更新) { 処理 } は、「初期化 → 条件判定 → 処理 → 更新 → 条件判定 → 処理 → …」の順に実行されます。初期化は最初に 1 回だけ、更新は処理の後に行われます。更新は i++ に限らず、どんな式でも書けます。

Main.java
public class Main {    public static void main(String[] args) {        for (int i = 1; i <= 10; i *= 3) {            System.out.println(i);        }    }}
ターミナル
java Main
1
3
9

初期化と更新には、カンマで区切って複数の式を書けます。初期化で複数の変数を宣言するときは、同じ型にする必要があります (int i = 0, j = 5 は可、int i = 0, long j = 5 は不可)。また、初期化・条件・更新はすべて省略でき、for (;;) は無限ループになります。

Main.java
public class Main {    public static void main(String[] args) {        for (int i = 0, j = 5; i < j; i++, j--) {            System.out.println(i + "-" + j);        }    }}
ターミナル
java Main
0-5
1-4
2-3

for 文の初期化で宣言した変数は、その for 文の中でしか使えません。ループが終わった後に値を使いたいときは、for 文の前で宣言しておきます。

Main.java
public class Main {    public static void main(String[] args) {        for (int i = 0; i < 3; i++) {            System.out.println(i);        }        System.out.println(i);    }}
ターミナル
javac Main.java

コンパイルエラー (6 行目): 変数 i は for 文の中でしか使えない

拡張 for 文

for (型 変数 : 配列) { 処理 } は、配列の要素を先頭から順に 1 つずつ取り出して処理します。添字を使わずに書けるので、すべての要素を順番に読むときに便利です。

ただし、ループの変数には要素の値がコピーされて入ります。ループの変数に代入しても、配列の要素は変わりません。配列の要素を書き換えたいときは、添字を使う通常の for 文を使います。

Main.java
public class Main {    public static void main(String[] args) {        int[] scores = {60, 70, 80};        for (int s : scores) {            s += 10;        }        System.out.println(scores[0]);        for (int i = 0; i < scores.length; i++) {            scores[i] += 10;        }        System.out.println(scores[0]);    }}
ターミナル
java Main
60
70

拡張 for 文では、添字や「何番目か」は分かりません。また、配列を逆順にたどったり、途中から始めたりすることもできません。

ループのネストと break・continue

ループの中にループを書くと、外側のループ 1 回ごとに、内側のループが最初から最後まで実行されます。内側のループの条件が外側の変数 (j <= i など) に依存している場合は、外側の回ごとに内側の回数が変わるので、表に書いて追いましょう。

break はループを終了し、continue はその回の残りの処理を飛ばして次の回に進みます。どちらも、それを囲む一番内側のループにだけ効きます。外側のループは続きます。

Main.java
public class Main {    public static void main(String[] args) {        for (int i = 1; i <= 3; i++) {            for (int j = 1; j <= 3; j++) {                if (j == 2) continue;                if (i == 3) break;                System.out.print(i + "" + j + " ");            }        }        System.out.println();    }}
ターミナル
java Main
11 13 21 23

j == 2 の回は continue で出力が飛ばされますが、内側のループは続きます。i == 3 の回は内側のループが break で終わりますが、外側のループは i <= 3 の判定まで進み、そこで終わります。

外側のループまでまとめて抜けたいときは、ループの前にラベルを付けて break ラベル名; と書きます。continue ラベル名; も同様に、ラベルを付けたループの次の回に進みます。

Main.java
public class Main {    public static void main(String[] args) {        outer:        for (int i = 1; i <= 3; i++) {            for (int j = 1; j <= 3; j++) {                if (i * j == 4) break outer;                System.out.println(i + " x " + j + " = " + (i * j));            }        }    }}
ターミナル
java Main
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
2 x 1 = 2

試験でよくある引っかけ

  • while と do-while の実行回数

    条件が最初から false なら、while 文は 0 回、do-while 文は 1 回実行されます。

  • do-while 文の最後のセミコロン

    } while (条件); のセミコロンを忘れるとコンパイルエラーです。

  • for 文の変数をループの外で使う

    for (int i = 0; ...) の i はループの外では使えず、コンパイルエラーになります。

  • 拡張 for 文で配列を書き換える

    拡張 for 文の変数に代入しても、配列の要素は変わりません (値のコピーに代入しているだけ)。

  • break・continue が効くループ

    ネストしたループの break や continue は、一番内側のループにだけ効きます。外側まで抜けるにはラベルを使います。

  • 条件の境界

    < と <= の違いで回数が 1 回ずれます。最後の回と、条件が false になる値を必ず確かめましょう。

問題で確認する

この分野の問題を、解説つきで読めます (登録不要)。

出典・参考

コード例は、試験の対象バージョンで実際にコンパイル・実行して結果を確認しています。