本文へスキップ
T2R tech2rich.com
プログラミング 📚 Java入門 第4回 #Java #入門 #プログラミング初心者 #繰り返し処理 #ループ

【Java入門 第4回】繰り返し処理 — for 文・while 文・拡張 for 文

同じ処理を何度も繰り返したいときに使う Java の for 文・while 文・do-while 文・拡張 for 文の使い方と、break / continue の効果的な使い方を初心者向けに解説します。

📅 公開: 2026.05.04 ⏱ 読了 約6分 ✍ 管理人

第3回 では、条件分岐を学びました。 今回は、プログラミングの恩恵をもっとも実感できる機能 — 繰り返し処理(ループ) を学びます。

「1〜100 までの合計を計算する」「リストの全要素を表示する」のような、同じ処理を何度も繰り返す 場面で活躍します。

繰り返し処理とは

たとえば「1から10までの数字を全部表示する」というプログラムを、繰り返しなしで書くとどうなるでしょうか?

System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
// ... 以下、10まで続く

これは大変ですし、100まで1000まで だったら現実的ではありません。 そこで登場するのが、繰り返し処理(ループ) です。

Java には主に 3 種類のループ があります。

構文適している場面
for繰り返す回数があらかじめ決まっている
while繰り返す回数が分からず「条件を満たす間だけ」繰り返したい
do-while最低 1 回は実行したい
拡張 for配列やリストの要素を全部処理したい

順番に見ていきましょう。

for 文 — 「N 回繰り返したい」

もっともよく使うループが for です。

基本形

for (初期化; 条件; 更新) {
    // 繰り返したい処理
}

なんだか難しそうに見えますが、3 つのパーツ が並んでいるだけです。

パーツ意味よくある書き方
初期化ループ開始時に1回だけ実行int i = 0
条件この条件が true の間ループを続けるi < 10
更新1 回ループするごとに実行i++ (= i = i + 1)

例: 1 から 5 まで表示する

public class ForDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println(i);
        }
    }
}

実行結果:

1
2
3
4
5

動作のイメージ

  1. i = 1 で開始(初期化)
  2. 1 <= 5true → ループ内を実行 → 1 を表示
  3. i++i = 2(更新)
  4. 2 <= 5true2 を表示
  5. … これを繰り返し
  6. i = 6 になったら 6 <= 5false → ループ終了

例: 1 から 100 までの合計

ループの中で計算を積み重ねれば、合計を求められます。

int total = 0;
for (int i = 1; i <= 100; i++) {
    total = total + i; // total += i; と書いても同じ
}
System.out.println("合計: " + total);

実行結果:

合計: 5050

1 + 2 + 3 + ... + 100 = 5050 を、たった3行で計算できました。

while 文 — 「条件を満たす間繰り返す」

繰り返す回数が事前に分からないときは while を使います。

基本形

while (条件) {
    // 繰り返したい処理
}

例: 残高が 0 になるまでお金を引き出す

public class WhileDemo {
    public static void main(String[] args) {
        int balance = 1000;

        while (balance > 0) {
            System.out.println("残高: " + balance + "円");
            balance = balance - 300;
        }
        System.out.println("残高がなくなりました");
    }
}

実行結果:

残高: 1000円
残高: 700円
残高: 400円
残高: 100円
残高がなくなりました

ループ内で balance が変化し、balance > 0false になった時点でループが終わります。

⚠ 無限ループに注意

while 文で 条件を変化させ忘れる と、永久にループが続いてしまいます。これを 無限ループ と呼びます。

int i = 0;
while (i < 10) {
    System.out.println(i);
    // ❌ i++ を書き忘れると、永久に 0 を表示し続ける!
}

実行してしまった場合は、ターミナルで Ctrl + C を押して強制終了してください。

do-while 文 — 「最低 1 回は実行したい」

while の親戚の do-while は、条件のチェックを最後に行う のが特徴です。 そのため、条件が最初から false でも、最低 1 回は実行されます

int count = 100;

do {
    System.out.println("count = " + count);
    count++;
} while (count < 10); // この時点で 100 < 10 は false なので、1回だけ実行

実行結果:

count = 100

💡 「ユーザーに必ず1回は入力させたい」のような場面で活躍します。実務では forwhile のほうがよく使われます。

拡張 for 文(for-each) — 「配列やリストの全要素を処理」

データの集まり(配列・リスト)があるときは、拡張 for 文(for-each) が便利です。

例: 名前のリストを全部表示する

public class ForEachDemo {
    public static void main(String[] args) {
        String[] names = {"佐藤", "鈴木", "高橋", "田中"};

        for (String name : names) {
            System.out.println(name + "さん");
        }
    }
}

実行結果:

佐藤さん
鈴木さん
高橋さん
田中さん

for (型 変数名 : 配列) という書き方で、配列の 各要素を1つずつ取り出して 処理できます。 names.length などを意識せずに済むため、配列の全要素を処理したいときの第一選択肢 です。

💡 配列(String[])については本連載の続編で詳しく解説します。今は「同じ型のデータをまとめて並べたもの」と理解すれば OK。

break — ループの途中で抜ける

ループの中で 特定の条件を満たしたら、その時点でループを終わらせたい ときは break を使います。

for (int i = 1; i <= 100; i++) {
    if (i == 5) {
        System.out.println("5 で終了!");
        break; // ループを脱出
    }
    System.out.println(i);
}

実行結果:

1
2
3
4
5 で終了!

i == 5 になった時点で、ループそのものから抜けています。

continue — その回だけスキップして次へ

continue「この回だけ飛ばして、次の回に進む」 命令です。

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue; // i == 3 のときはスキップ
    }
    System.out.println(i);
}

実行結果:

1
2
4
5

i == 3 のときは System.out.println(i); がスキップされ、次の繰り返しに進んでいるのが分かります。

ネスト(入れ子)ループ — 九九の表

ループの中にループを入れると、表のような2次元的な処理 ができます。

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                System.out.print(i * j + "\t"); // \t はタブ文字
            }
            System.out.println(); // 改行
        }
    }
}

実行結果(抜粋):

1   2   3   4   5   6   7   8   9
2   4   6   8   10  12  14  16  18
3   6   9   12  15  18  21  24  27
...

💡 System.out.print()改行なしSystem.out.println()改行あり で表示します。

練習問題

以下の3つのプログラムを書いてみましょう。

問題 1: 1〜10 の偶数だけを表示する

期待する出力:

2
4
6
8
10

問題 2: 1〜100 のうち、3 の倍数だけの合計を計算する

ヒント: i % 3 == 0 で「3 で割り切れる」かをチェックできます(% は剰余演算子)。

問題 3: 拡張 for 文を使って、配列の中身の合計を求める

int[] scores = {80, 75, 92, 60, 88};

解答例

public class LoopExercise {
    public static void main(String[] args) {
        // 問題1: 偶数を表示
        System.out.println("--- 問題1 ---");
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                System.out.println(i);
            }
        }

        // 問題2: 3の倍数の合計
        System.out.println("--- 問題2 ---");
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0) {
                sum += i;
            }
        }
        System.out.println("3の倍数の合計: " + sum);

        // 問題3: 配列の合計
        System.out.println("--- 問題3 ---");
        int[] scores = {80, 75, 92, 60, 88};
        int total = 0;
        for (int s : scores) {
            total += s;
        }
        System.out.println("合計: " + total);
        System.out.println("平均: " + (total / scores.length));
    }
}

まとめ

第4回では、以下を学びました。

これで、Java の基本構文(変数・条件分岐・ループ)はマスターしました! ここまで来れば、簡単な計算プログラムや判定プログラムは自分で書ける はずです。

次回以降の連載では、配列メソッドクラス といった、より本格的な内容に進んでいきます。 お疲れさまでした、また次回お会いしましょう!

関連の技術記事