目次
はじめに
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
文内ではbreak
とcontinue
を使うことでループ制御ができます。
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文は非常に柔軟で多用途に使えるループ構文です。正しく使えば、効率的な繰り返し処理が実現できます。本記事では基本から応用までを網羅しましたが、実際にコードを書いて動作を確認することで、理解が深まります。是非、紹介した例を参考にしながら、自身でもプログラムを作ってみてください。