1. はじめに
「do-while 文って、while や for と何が違うの?」——Java を学び始めた多くの人が最初にぶつかる疑問のひとつです。do-while は少なくとも1回は必ず処理が実行される“後判定”のループ構文。ユーザー入力の確認や、初回は必ず画面表示したいときなど、実務でも“ここぞ”という場面で役立ちます。
この章では、do-while 文の全体像をつかむために、まずは何が学べるのかを明確にします。以降の章で、構文・while との違い・サンプルコード・注意点・FAQまで順番に掘り下げ、読み終えるころには自然に使い分けができることを目指します。
想定読者
- Java を学び始めた初学者〜基礎を固めたい人
- whileと- do-whileの違いや使いどころを実例で理解したい人
- 無限ループやセミコロンの付け忘れなど初学者がつまずきやすいポイントをまとめて押さえたい人
この記事でわかること
- do-while文の基本構文と振る舞い(後判定/最低1回実行)
- while文との具体的な違いと、迷わない使い分けの基準
- 初心者向けのシンプルなサンプルコードと実行結果の読み解き方
- break・- continueと組み合わせる際の注意点
- よくあるエラーや落とし穴(セミコロン忘れ、条件設計ミスによる無限ループ など)
この先の章では、まずは最短距離で構文を理解し、比較・実例・注意点と段階を踏んで知識を定着させていきます。
2. Java do while 文とは?【基本構文】
Java のループ構文には for や while がありますが、do-while 文は少し特徴的です。**「必ず1回は処理を実行してから条件を判定する」**という仕組みを持っているため、「後判定ループ」と呼ばれることもあります。
他のループは条件が最初にチェックされ、場合によっては1度も処理が実行されないことがあります。しかし do-while は必ず1回処理を実行するため、特定の場面で便利に使えるのです。
基本構文
do {
    // 実行する処理
} while (条件式);
ここで重要なのは、while (条件式) の後に必ずセミコロン ; を付けるという点です。これを忘れるとコンパイルエラーになるため注意しましょう。
処理の流れ
- do { ... }内の処理を実行
- while (条件式);で判定
- 条件が trueなら再び処理へ戻る
- 条件が falseになればループ終了
つまり「実行 → 判定 → 繰り返し」という順序です。
簡単な例
int count = 1;
do {
    System.out.println("ループ回数: " + count);
    count++;
} while (count <= 3);
実行結果
ループ回数: 1
ループ回数: 2
ループ回数: 3
このコードでは count <= 3 の間処理を繰り返しますが、最初の判定前に1回は必ず「ループ回数: 1」と表示されます。
3. while 文との違いをわかりやすく解説
Java におけるループ処理の代表は while 文と do-while 文です。両者はとても似ていますが、「条件を判定するタイミング」に決定的な違いがあります。この違いを理解しておくと、使い分けが格段にスムーズになります。
while 文の処理順
while (条件式) {
    // 実行する処理
}
- 1. 最初に条件式を判定
- 2. 条件が trueの場合のみ処理を実行
- 3. 条件が falseの場合、処理は一度も実行されない
do-while 文の処理順
do {
    // 実行する処理
} while (条件式);
- 1. まず処理を実行
- 2. その後で条件式を判定
- 3. 条件が trueなら再度処理を繰り返す
- 4. 条件が falseになったら終了
実行タイミングの比較表
| 特徴 | while 文 | do-while 文 | 
|---|---|---|
| 判定の順番 | 処理の前に判定 | 処理の後に判定 | 
| 1回も実行されない可能性 | あり | なし(必ず1回実行) | 
| 使用頻度 | 高い | やや少ない | 
イメージで理解する
- while 文は「会場に入る前にチケットを確認するイメージ」
 → チケットがなければ入場できず、処理は1度も実行されない。
- do-while 文は「まず会場に入ってから出口でチケットを確認するイメージ」
 → とりあえず1回は会場に入れる(必ず処理が1回は実行される)。
簡単な比較コード
int x = 5;
// while 文
while (x < 5) {
    System.out.println("while: 実行されました");
}
// do-while 文
do {
    System.out.println("do-while: 実行されました");
} while (x < 5);
実行結果
do-while: 実行されました
x の値が最初から 5 なので条件は false ですが、while 文は1回も実行されず、do-while 文は必ず1回実行されることがわかります。
4. Java do while 文のサンプルコード【初心者向け】
ここからは、実際に do-while 文を使ったサンプルコードを通じて、その動作を確認していきましょう。ポイントは「必ず1回は実行される」という性質です。
基本例:カウントを繰り返す
int count = 1;
do {
    System.out.println("こんにちは! " + count + "回目");
    count++;
} while (count <= 3);
実行結果
こんにちは! 1回目
こんにちは! 2回目
こんにちは! 3回目
このコードでは、count が 3 以下の間、メッセージを表示します。最初に処理を実行してから条件判定を行うため、必ず1回はメッセージが表示されます。
条件が最初から false の場合
int num = 10;
do {
    System.out.println("実行されました!");
} while (num < 5);
実行結果
実行されました!
条件 num < 5 は最初から false ですが、それでも処理が1回は実行されるのが do-while 文の特徴です。
乱数を使った例:サイコロが6になるまで繰り返す
import java.util.Random;
public class Main {
    public static void main(String[] args) {
        Random rand = new Random();
        int dice;
        do {
            dice = rand.nextInt(6) + 1; // 1〜6 の乱数
            System.out.println("サイコロの目: " + dice);
        } while (dice != 6);
        System.out.println("6が出たので終了します!");
    }
}
実行例
サイコロの目: 2
サイコロの目: 5
サイコロの目: 6
6が出たので終了します!
このプログラムは、6が出るまで必ずサイコロを振り続けます。もし while 文で書いた場合、最初の判定で条件が false なら一度も処理されませんが、do-while なら必ず1回はサイコロを振ります。
ポイント
- 最低1回は処理を実行したい場面で便利(例:ユーザー入力を1回は必ず受け取る、サイコロを最低1回は振る)。
- while文との違いをコードで比較すると理解しやすい。
5. do while 文の使いどころとメリット・デメリット
ここまで do-while 文の構文やサンプルを見てきました。では実際にどのような場面で使うと効果的なのでしょうか。ここでは 「使いどころ」 と、それに伴う メリット・デメリット を整理します。
do while 文を使うべき場面
- 最低1回は処理を実行したいケース- ユーザー入力を求める処理(例:「もう一度入力しますか?」のような確認)。
- サイコロを1回は振ってから判定する処理。
- ファイル読み込みや接続確認を必ず1回は試みる場面。
 
- 繰り返し条件を“後から判定”する方が自然な場合- 「とりあえず試す」→「条件を満たせば続ける」という流れがプログラムの意図に合うとき。
 
メリット
- 必ず1回は実行される保証がある
 例えば、ユーザーに1度は必ずメッセージを表示する場合に適している。
- 入力確認や試行処理に向いている
 ループの入り口で止めずに、一度走らせるのが自然な処理にマッチ。
デメリット
- 可読性が落ちることがある
 「最初に処理が走る」ことを知らない人には意図が伝わりづらい。
 チーム開発ではwhile文やfor文の方が直感的に理解されやすい。
- 使用頻度が低い
 実務ではforやwhileが選ばれることが多いため、do-whileはやや特殊。
 無理に使うと「なぜここで do-while?」と混乱を招く可能性がある。
まとめ
- 「最低1回は実行したい処理」という明確な理由があるときに使う。
- それ以外のケースでは while文やfor文を優先するのが無難。
6. do while 文と break・continue の組み合わせ
do-while 文は単独でも便利ですが、制御文の break や continue と組み合わせることで、より柔軟な処理が可能になります。ここでは代表的な使い方を具体例で紹介します。
break:ループを途中で終了する
break はループを強制的に終了する命令です。do-while 内でも同じように使えます。
int count = 1;
do {
    if (count > 5) {
        break;  // 5を超えたらループ終了
    }
    System.out.println("カウント: " + count);
    count++;
} while (true);
System.out.println("ループ終了後の処理です");
実行結果
カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5
ループ終了後の処理です
この例では while (true) により無限ループに見えますが、break によって条件を満たした時点で終了できます。

continue:処理をスキップして次へ進む
continue は現在の繰り返し処理をスキップして、次の判定へ進む命令です。
int num = 0;
do {
    num++;
    if (num % 2 == 0) {
        continue;  // 偶数の場合はスキップ
    }
    System.out.println("奇数: " + num);
} while (num < 5);
実行結果
奇数: 1
奇数: 3
奇数: 5
この例では、偶数がスキップされ、奇数だけが出力されます。
応用例:ユーザー入力と組み合わせる
例えば「ユーザーに必ず1回入力させる」処理では、do-while に break を入れて条件を満たした時点で終了させる、といったパターンがよく使われます。
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input;
        do {
            System.out.print("終了するには exit と入力してください: ");
            input = scanner.nextLine();
            if (input.equals("exit")) {
                break;  // "exit" と入力されたら終了
            }
            System.out.println("あなたの入力: " + input);
        } while (true);
        System.out.println("プログラムを終了します");
    }
}
ポイント
- break→ ループを完全に終了
- continue→ その回の処理だけスキップして次のループへ
- do-whileと組み合わせることで、**「最低1回は実行したい処理」**に柔軟な条件分岐を組み込める
7. よくあるエラー・注意点
do-while 文はシンプルな構文ですが、初心者が実際に書いてみると意外とつまずくポイントがいくつかあります。ここでは代表的なエラーや注意点を整理します。
1. セミコロンの付け忘れ
do-while 文では、while (条件式) の後にセミコロンを付ける必要があります。
これを忘れるとコンパイルエラーになります。
// ❌ エラーになる例
do {
    System.out.println("処理中");
} while (x < 5)   // ← セミコロンがない!
// ✅ 正しい書き方
do {
    System.out.println("処理中");
} while (x < 5);
2. 無限ループに注意
条件式を true のままにしてしまうと、ループが止まらなくなります。
int x = 1;
do {
    System.out.println("実行: " + x);
    // x を増やさないので条件がずっと true のまま
} while (x > 0);
このコードは無限ループになり、プログラムが止まらなくなります。
→ 条件式の更新や終了条件を必ず設計することが大切です。
3. 意図せず「1回だけ実行」されるケース
条件が最初から false であっても必ず1回は処理が実行されるため、意図せず「1回だけ動く」ことがあります。
int num = 10;
do {
    System.out.println("実行されました");
} while (num < 5);
実行結果
実行されました
本来ループしたくなかったのに、1回だけ処理されてしまう場合があるため、条件設計に注意が必要です。
4. while 文との混同
初心者は「while と同じように動く」と思い込みがちですが、do-while は最低1回実行される点を忘れるとバグの原因になります。
まとめ
- ;の付け忘れは最も多いミス
- 無限ループにならないように変数更新を忘れない
- 「必ず1回実行される」という性質を意識して条件を設計する
8. FAQ(よくある質問)
ここでは、do-while 文を学び始めたときに多くの人が抱く疑問を Q&A 形式で整理しました。基本から実務的なポイントまで押さえておくと安心です。
Q1. do-while 文はどんなときに使うべきですか?
A: 「最低1回は必ず処理を実行したい」場面で使います。
たとえばユーザー入力を必ず1回は受け付ける場合や、初回の処理を必ず試してから継続可否を判定したいときに適しています。
Q2. while 文との使い分けはどうすればいいですか?
A:
- while 文 → 条件を満たすときだけ処理したい
- do-while 文 → 条件に関係なく最低1回は処理したい
基本的には while 文を使う場面が多いですが、「1回だけでも必ず動かしたい」ときは do-while を選びましょう。
Q3. 無限ループになるのはなぜですか?
A: 条件式が常に true になっている場合、処理が終わりません。
例:カウンタ変数を更新していない、終了条件を適切に設定していないなど。
→ 対策として「ループ内で条件が変化するように設計する」ことが重要です。
Q4. 実務でも do-while 文はよく使われますか?
A: 頻度は高くありません。多くの場合は for や while 文で十分対応できます。ただしユーザー入力や処理確認のように「必ず1回は実行する」必要がある箇所では今でも利用されます。
Q5. do-while 文を知らなくても困りませんか?
A: 基本的なプログラミングは for と while でカバーできます。ただし既存コードに do-while が使われている場合もあるため、理解しておくことは必須です。特に条件判定の順序が違うことを理解しておかないと、コードの挙動を読み間違える可能性があります。
Q6. セミコロンは必ず必要ですか?
A: はい。while (条件式); の末尾には必ずセミコロンが必要です。これを忘れるとコンパイルエラーになります。
9. まとめ
ここまで、Java の do-while 文について基礎から実践まで解説してきました。最後に重要なポイントを整理しておきましょう。
do-while 文の特徴
- 最低1回は必ず実行されるループ構文
- 処理 → 条件判定 の順序で動作する(後判定ループ)
- 構文の最後に セミコロンが必須
while 文との違い
- while→ 処理前に条件を判定するため、場合によっては1度も実行されない
- do-while→ 必ず1回は実行されるため、初回処理が保証される
実際の使いどころ
- ユーザー入力を必ず1回は求めたい場合
- 繰り返しを「試行してから判定」する処理(例:サイコロ、接続テスト)
- break/continue と組み合わせて柔軟な制御を行う場面
注意点
- セミコロン忘れによるエラー
- 条件式を変化させないことで発生する無限ループ
- 「必ず1回実行される」性質を意識して条件設計を行うこと
学習・実務への活かし方
- 実務では使用頻度は高くないものの、既存コードの理解や特殊な場面での利用のために知識は必須
- 基本は forやwhileを使い、必要に応じてdo-whileを適切に使い分けるとよい
✅ まとめると、do-while 文は「必ず1回実行したい処理」に強みを持つ構文です。
これを理解しておけば、Java のループ制御に関する知識が一段と深まり、コードの読み書きがよりスムーズになります。

 
 