Java入門 #9 - while文と do-while文

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

while は条件が true の間、繰り返す
do-while は最低1回実行してから判定する
• 繰り返し回数が不明なときは while、決まっているときは for

このシリーズについて

「Java入門」は1本1テーマで進む全15回のシリーズです。本記事はその第9回として、while文とdo-while文による繰り返し処理を扱います。

前提条件: Java 21 がインストール済み。if文とfor文の基本を理解していること。

while文とは

while 文は条件が true である限り、ブロック内を繰り返します。

while (条件式) {
    // 条件が true の間、繰り返される
}

for文と異なり、繰り返し回数が事前に決まっていない場合に向いています。

特徴説明
実行タイミング条件を先に判定してから実行
最小実行回数0回(初回から条件が false なら1回も実行されない)
用途ユーザー入力待ち、ファイル終端まで読み込み、など

while文の例

// Java 21
public class WhileExample {
    public static void main(String[] args) {
        int count = 0;
        
        while (count < 5) {
            System.out.println("count = " + count);
            count++;  // 忘れると無限ループになる
        }
        
        System.out.println("ループ終了");
    }
}

出力:

count = 0
count = 1
count = 2
count = 3
count = 4
ループ終了

注意: count++ を書き忘れると、条件が永遠に true のまま無限ループに陥ります。必ず条件を変化させる処理を含めてください。

do-while文とは

do-while 文はブロックを先に実行してから条件判定します。

do {
    // 最低1回は必ず実行される
} while (条件式);

最大の違いは最低1回は実行される点です。

特徴説明
実行タイミング実行してから条件を判定
最小実行回数1回(条件が最初から false でも1回は動く)
用途メニュー選択(最低1回は表示したい)、入力検証、など

do-while文の例

// Java 21
import java.util.Scanner;

public class DoWhileExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int input;
        
        do {
            System.out.print("1~10の数字を入力してください: ");
            input = scanner.nextInt();
        } while (input < 1 || input > 10);  // 範囲外なら再入力
        
        System.out.println("入力値: " + input);
        scanner.close();
    }
}

動作:

  • 範囲外の値を入力すると、条件が false になるまで繰り返す
  • 最低1回はプロンプトが表示される

ポイント: 「ユーザーに最低1回は何か操作させたい」場合は do-while が自然です。while だと初回の条件判定で弾かれる可能性があります。

無限ループ

条件を常に true にすると、無限ループになります。意図的に使う場合もあります。

// Java 21
public class InfiniteLoop {
    public static void main(String[] args) {
        int i = 0;
        
        while (true) {
            System.out.println("i = " + i);
            i++;
            
            if (i >= 5) {
                break;  // ループを抜ける
            }
        }
        
        System.out.println("終了");
    }
}

出力:

i = 0
i = 1
i = 2
i = 3
i = 4
終了
制御文役割
breakループを即座に抜ける
continue現在の周回をスキップして次の周回へ

補足: サーバーやゲームループなど、「永続的に動かしたい処理」では while (true) + 内部の break 条件が定番です。

while vs do-while vs for の使い分け

種類繰り返し回数条件判定タイミング用途例
for事前に決まっている先に判定配列の走査、決まった回数のループ
while不明先に判定ファイル終端まで、外部イベント待ち
do-while不明だが最低1回は実行後で判定メニュー表示、入力検証

迷ったら以下の順で選びます。

  1. 繰り返し回数が決まっている → for
  2. 最低1回は実行したい → do-while
  3. それ以外(繰り返し回数不明) → while

実践例: 合計値を計算

// Java 21
import java.util.Scanner;

public class SumUntilZero {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sum = 0;
        int input;
        
        System.out.println("数字を入力してください(0で終了)");
        
        while (true) {
            input = scanner.nextInt();
            
            if (input == 0) {
                break;
            }
            
            sum += input;
        }
        
        System.out.println("合計: " + sum);
        scanner.close();
    }
}

動作:

  • ユーザーが 0 を入力するまで数値を加算
  • 0break してループを抜ける

ポイント: 「終了条件が途中で決まる」パターンでは while (true) + break が読みやすいことがあります。

よくあるミス

1. セミコロンの位置(while)

while (count < 5);  // セミコロンがあると何もしないループになる
{
    count++;
}

正しくは:

while (count < 5) {
    count++;
}

2. do-while のセミコロン忘れ

do {
    count++;
} while (count < 5)  // セミコロンが必要

正しくは:

do {
    count++;
} while (count < 5);  // 末尾にセミコロン

3. 無限ループの原因

int i = 0;
while (i < 10) {
    System.out.println(i);
    // i++ を書き忘れている
}

正しくは:

int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;  // 必ず条件を変化させる
}

注意: 無限ループに陥ったら Ctrl+C(macOS/Linux)または Ctrl+Break(Windows)でプログラムを強制終了できます。

まとめ

構文条件判定最小実行回数主な用途
while0回繰り返し回数不明、ファイル読み込み
do-while1回メニュー表示、入力検証
for0回繰り返し回数が決まっている
  • break でループを即座に抜ける
  • continue で現在の周回をスキップ
  • 無限ループは while (true) で作る(脱出条件を忘れずに)

次のステップ

Java入門 #10 - 配列の基本 で複数の値をまとめて扱う配列を学びます。

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る