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

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

このシリーズについて

「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 - 配列の基本 で複数の値をまとめて扱う配列を学びます。

まとめ

この記事では、手順を追って動かしながら重要な確認ポイントを押さえることが大切です。まずは学習用の最小構成で動作確認し、本番利用する前にセキュリティ、権限、エラー処理、運用手順を見直してください。

参考リソース

← 一覧に戻る
PR
PR
PR
PR