【Java】While文を完全マスター!基本構文から応用まで丁寧に解説

Java

はじめに

Javaにおける”while文”は、特定の条件が成立している間、繰り返し処理を実行する制御構文の一つです。本記事では、初心者にも理解しやすいように図や表を交えて、Javaのwhile文について詳しく解説します。基本的な文法から応用的な使い方、よくある間違いや注意点、実践的なコード例まで紹介します。

while文とは?

while文は、繰り返し処理を行うループ処理の一種で、以下のような構文で記述されます。

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

図1:while文の基本構造フロー

+-----------------------+
| 条件式を評価する |
+----------+------------+
|
v
+------+
| true |
+------+
|
v
+---------------------+
| ループの本体処理 |
+----------+----------+
|
v
(再び条件式評価へ)
|
+------+
| false|
+------+
|
v
+----------------+
| ループ終了 |
+----------------+

基本的な使い方

以下は、while文を使って1から5までの数字を表示するコード例です。

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

実行結果:

1
2
3
4
5

while文 / for文 比較表

比較項目while文for文
繰り返し条件先に条件を評価し、trueなら処理を繰り返す初期化・条件判定・更新処理を一括で記述可能
初期化の場所ループの外で行う必要があるfor文内で完結できる
繰り返し更新処理ループ本体内で記述するfor文の構文内に記述できる
可読性処理の流れが見えにくい場合がある一目で処理の全体像が見える

無限ループとその回避

以下のコードは、無限ループの典型例です。

int i = 0;
while (i < 5) {
    System.out.println(i);
    // i++ がないため、iは常に0
}

解説:
この例ではi++の記述がないため、条件式i < 5が永遠にtrueとなり、ループが終了しません。
無限ループを回避するには、ループ条件が必ずfalseになるような更新処理が必要です。

do-while文との違い

Javaにはdo-whileという構文もあります。

do {
    // 少なくとも1回は実行される
} while (条件式);

比較:

特徴while文do-while文
実行順序条件式を先に評価条件式の評価は後
最低実行回数条件がtrueでないと一度も実行されない最低1回は必ず実行される

ネストされたwhile文

while文の中に別のwhile文を入れることもできます。

int i = 1;
while (i <= 3) {
    int j = 1;
    while (j <= 2) {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

出力:

i = 1, j = 1
i = 1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2

breakとcontinue

while文内ではbreakcontinueを使うことでループ制御ができます。

int i = 0;
while (i < 10) {
    i++;
    if (i == 5) continue; // 5はスキップ
    if (i == 8) break;    // 8でループ終了
    System.out.println(i);
}

出力:

1
2
3
4
6
7

よくある間違いとその対処

よくある間違い例原因解決策
無限ループ更新処理を忘れるループ内で変数の更新を忘れない
条件が常にfalse初期値または条件が間違っているデバッグで条件を確認する
変数のスコープエラーループ外で定義されていない変数のスコープを正しく設定

応用例:ユーザー入力を使ったループ

import java.util.Scanner;

public class InputWhile {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input;
        while (true) {
            System.out.print("文字を入力してください (終了はexit): ");
            input = scanner.nextLine();
            if (input.equals("exit")) break;
            System.out.println("あなたが入力した文字:" + input);
        }
        scanner.close();
    }
}

おわりに

Javaのwhile文は非常に柔軟で多用途に使えるループ構文です。正しく使えば、効率的な繰り返し処理が実現できます。本記事では基本から応用までを網羅しましたが、実際にコードを書いて動作を確認することで、理解が深まります。是非、紹介した例を参考にしながら、自身でもプログラムを作ってみてください。

タイトルとURLをコピーしました