Java の while 文による繰り返しについて
このページでは、Java における while
文の基本構文や使用方法について解説します。サンプルコードを通じて、さまざまな場面での while
文の使用例を学びましょう。
while 文とは
while
文は、指定した条件が true
である間、繰り返し処理を行うための制御構造です。条件が false
になると、ループは終了します。
これは、反復処理を行う必要がある場合や、特定の条件が満たされるまでコードを実行する場合に便利です。
基本構文
while (条件式) {
// 条件が true の間、実行されるコード
}
例えば、次のコードは、変数 count
が 5 未満である間、ループを続けます。
int count = 0;
while (count < 5) {
System.out.println("Count: " + count);
count++;
}
単純なループの例
基本的な例として、1から10までの数値を順に出力するコードを見てみましょう。
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
このコードでは、i
の値が 10 に達するまでループが実行されます。
条件付きループの例
ユーザーからの入力に基づいてループを続ける例を示します。
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
int number;
System.out.println("正の数を入力してください。終了するには 0 を入力してください。");
while ((number = scanner.nextInt()) != 0) {
System.out.println("入力された数: " + number);
}
System.out.println("プログラムを終了します。");
この例では、ユーザーが 0 を入力するまでループが実行されます。
無限ループの例
条件が常に true
の場合、ループは無限に実行されます。以下は典型的な無限ループの例です。
while (true) {
System.out.println("これは無限ループです。");
// 無限ループを終了するには break を使用
break;
}
無限ループは、通常、特定の条件が満たされるまで続ける必要がある場合に使用されます。
ネストされたループの例
while
文を他のループ内で使用することもできます。以下は、2次元配列を操作する例です。
int[][] numbers = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int row = 0;
while (row < numbers.length) {
int col = 0;
while (col < numbers[row].length) {
System.out.print(numbers[row][col] + " ");
col++;
}
System.out.println();
row++;
}
このコードは、2次元配列のすべての要素を順に出力します。
do-while 文との比較
while
文と do-while
文の違いは、条件チェックのタイミングです。
while
: 条件を先にチェックしてからループを実行します。do-while
: ループを1回実行してから条件をチェックします。
// do-while 文の例
int count = 0;
do {
System.out.println("Count: " + count);
count++;
} while (count < 5);
この例では、count
が初めから 5 以上であっても、1回はループが実行されます。
よくある間違い
- 条件式が常に
true
となるロジックエラー。 - ループ変数の更新を忘れることによる無限ループ。
- 条件式に誤った比較演算子を使用すること。
// 無限ループの例(更新忘れ)
int count = 0;
while (count < 5) {
System.out.println(count);
// count++; を忘れると無限ループになります。
}
使用例と応用
while
文は、以下のような状況でよく使用されます。
- ユーザー入力に基づいてループを続ける。
- ファイルの終端までデータを読み込む。
- ゲームのメインループの実装。
// ファイル読み込みの例
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
この例では、ファイルの各行を順に読み込んで出力します。