Java の while 文とは?条件に応じて繰り返すループ処理
新人
「Java で同じ処理を繰り返し実行する方法はありますか?」
先輩
「あるよ!Java には while 文 というループ処理の方法があるんだ。」
新人
「for 文とどう違うんですか?」
先輩
「while 文は、条件が true の間ずっと処理を繰り返すんだよ。詳しく説明していくね!」
1. while 文とは?(基本的な説明)
Java の while 文 は、指定した条件が true である間、同じ処理を繰り返すループ処理です。
while 文の特徴
- 条件が
trueである間、処理を繰り返す - 繰り返し回数が決まっていない場合に便利
- 条件を満たさなければ一度も実行されないことがある
例えば、「5 回メッセージを表示する」という処理を while 文で書くことができます。
2. while 文の基本的な書き方
while 文を使うと、条件を満たす間、繰り返し処理を実行できます。基本的な書き方を見てみましょう。
while 文の基本構文
public class WhileExample {
public static void main(String[] args) {
int count = 1;
while (count <= 5) { // count が 5 以下の間ループ
System.out.println("現在の回数: " + count);
count++; // ループごとに count を増やす
}
}
}
現在の回数: 1
現在の回数: 2
現在の回数: 3
現在の回数: 4
現在の回数: 5
while 文の構造
- 条件(
while (条件)):条件がtrueなら処理を繰り返す - 処理:条件を満たしている間に実行される
- 条件を変更:ループを適切に終了させるため、条件の変化が必要
例えば、count = 1 から始めて、count の値が 5 以下の間ループし、count++ で値を増やしていきます。
while 文のポイント
- 条件を満たさないと 1 回も実行されない
- 無限ループに注意(条件が変わらないと止まらない)
- 繰り返し回数が決まっていない場合に適している
例えば、count++ を書き忘れると、count の値が変わらず、無限ループになります。
3. while 文を使って数値を繰り返し処理する方法
while 文を使うことで、数値を増やしながら繰り返し処理を行うことができます。例えば、「1 から 10 までの数字を表示する」プログラムを作成してみましょう。
数値を繰り返し処理する while 文の例
public class WhileLoopExample {
public static void main(String[] args) {
int num = 1;
while (num <= 10) { // num が 10 以下の間ループ
System.out.println("現在の数値: " + num);
num++; // num の値を 1 ずつ増やす
}
}
}
現在の数値: 1
現在の数値: 2
現在の数値: 3
現在の数値: 4
現在の数値: 5
現在の数値: 6
現在の数値: 7
現在の数値: 8
現在の数値: 9
現在の数値: 10
ポイント
- 条件
num <= 10を満たす間、ループが続く - ループのたびに
numを 1 ずつ増加させる - 10 に達すると条件が
falseになり、ループが終了する
このように、while 文を使うと、特定の範囲の数値を扱う処理を簡単に記述できます。
4. while 文を使ってユーザー入力を繰り返し処理する方法
while 文は、ユーザーが特定の入力をするまで繰り返し処理を行うのにも適しています。例えば、ユーザーが「exit」と入力するまで、文字列を受け付けるプログラムを作成してみましょう。
ユーザー入力を繰り返し処理する while 文の例
import java.util.Scanner;
public class WhileUserInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("exit")) { // "exit" が入力されるまで繰り返す
System.out.print("入力してください(終了するには 'exit' を入力): ");
input = scanner.nextLine();
System.out.println("あなたの入力: " + input);
}
System.out.println("プログラムを終了します。");
scanner.close();
}
}
入力してください(終了するには 'exit' を入力): こんにちは
あなたの入力: こんにちは
入力してください(終了するには 'exit' を入力): Java
あなたの入力: Java
入力してください(終了するには 'exit' を入力): exit
あなたの入力: exit
プログラムを終了します。
ポイント
- ユーザーが「exit」を入力するまでループが続く
scanner.nextLine()でユーザーの入力を取得- while 条件内で
input.equals("exit")を判定
この方法を使うと、ユーザーの入力に応じた処理を簡単に作成できます。
5. while 文と for 文の違い
while 文と for 文は、どちらも繰り返し処理を行うための構文ですが、それぞれの用途が異なります。while 文と for 文の違いを比較してみましょう。
while 文と for 文の比較
| 比較項目 | while 文 | for 文 |
|---|---|---|
| ループの適用範囲 | 条件が満たされる間、繰り返す | 回数が決まっているときに適している |
| 条件の書き方 | 条件のみ指定(初期化や更新処理は別で記述) | 初期化、条件、更新処理をまとめて記述 |
| 適した場面 | 繰り返し回数が決まっていないとき | 繰り返し回数が決まっているとき |
while 文と for 文の書き方の違い
while 文を使った場合
public class WhileExample {
public static void main(String[] args) {
int i = 1;
while (i <= 5) { // i が 5 以下の間ループ
System.out.println("現在の回数: " + i);
i++;
}
}
}
現在の回数: 1
現在の回数: 2
現在の回数: 3
現在の回数: 4
現在の回数: 5
for 文を使った場合
public class ForExample {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) { // 1 から 5 まで繰り返す
System.out.println("現在の回数: " + i);
}
}
}
現在の回数: 1
現在の回数: 2
現在の回数: 3
現在の回数: 4
現在の回数: 5
どちらを使うべきか?
- 繰り返し回数が決まっている場合 … for 文が適している
- 回数が決まっていない場合 … while 文が便利
- ユーザーの入力を受け付ける処理 … while 文を使うと簡単
例えば、カウンターを使って決まった回数繰り返す場合は for 文が向いていますが、条件によって処理を続ける場合は while 文が適しています。
6. while 文を使った応用例(特定の条件でループを抜ける)
while 文の処理を途中で終了するには break 文を使います。例えば、ユーザーが特定の値を入力したらループを終了するプログラムを作ってみましょう。
break 文を使ってループを抜ける例
import java.util.Scanner;
public class WhileBreakExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) { // 無限ループ
System.out.print("数値を入力してください(0 を入力すると終了): ");
int num = scanner.nextInt();
if (num == 0) { // 0 が入力されたらループを抜ける
System.out.println("ループを終了します。");
break;
}
System.out.println("入力された数値: " + num);
}
scanner.close();
}
}
数値を入力してください(0 を入力すると終了): 5
入力された数値: 5
数値を入力してください(0 を入力すると終了): 3
入力された数値: 3
数値を入力してください(0 を入力すると終了): 0
ループを終了します。
ポイント
while (true)を使って無限ループを作成- ユーザーが
0を入力するとbreakでループを終了 - 通常の while 文と異なり、意図的にループを抜けられる
この方法を使うと、特定の条件でループを強制的に終了することができます。
7. while 文を使った応用例(合計を求める)
while 文を使うと、複数の数値を合計する処理を簡単に実装できます。例えば、ユーザーが入力した数値を合計し、「0」が入力されたら計算を終了するプログラムを作ってみましょう。
合計を求める while 文の例
import java.util.Scanner;
public class WhileSumExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
while (true) {
System.out.print("数値を入力してください(0 を入力すると合計を表示): ");
int num = scanner.nextInt();
if (num == 0) { // 0 を入力したらループ終了
break;
}
sum += num; // 合計を更新
}
System.out.println("合計: " + sum);
scanner.close();
}
}
数値を入力してください(0 を入力すると合計を表示): 10
数値を入力してください(0 を入力すると合計を表示): 20
数値を入力してください(0 を入力すると合計を表示): 15
数値を入力してください(0 を入力すると合計を表示): 0
合計: 45
ポイント
- ユーザーが入力した数値を
sumに加算 0を入力するとbreakでループ終了- 最終的に合計を出力
この方法を使うと、数値の入力を続けながら合計を求めるプログラムを作ることができます。
8. 練習問題:while 文を使ったプログラムを作ろう
ここまで学んだ while 文の知識を使って、練習問題に挑戦してみましょう。問題を解きながら while 文の理解を深めてください。
問題 1: 1 から 100 までの偶数の合計を求める
while 文を使って、1 から 100 までの偶数を合計するプログラムを作ってください。
public class WhileEvenSum {
public static void main(String[] args) {
int num = 1;
int sum = 0;
while (num <= 100) {
if (num % 2 == 0) { // 偶数のみ合計
sum += num;
}
num++;
}
System.out.println("1 から 100 までの偶数の合計: " + sum);
}
}
1 から 100 までの偶数の合計: 2550
問題 2: 指定した数までカウントダウン
ユーザーが入力した数から 0 までカウントダウンするプログラムを作ってください。
import java.util.Scanner;
public class WhileCountdown {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("カウントダウンを開始する数を入力してください: ");
int num = scanner.nextInt();
while (num >= 0) {
System.out.println(num);
num--;
}
System.out.println("カウントダウン終了!");
scanner.close();
}
}
カウントダウンを開始する数を入力してください: 5
5
4
3
2
1
0
カウントダウン終了!
問題 3: ユーザーが正しいパスワードを入力するまで繰り返す
「1234」が入力されるまで繰り返し入力を求めるプログラムを作ってください。
import java.util.Scanner;
public class WhilePasswordCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String correctPassword = "1234";
String input = "";
while (!input.equals(correctPassword)) {
System.out.print("パスワードを入力してください: ");
input = scanner.nextLine();
}
System.out.println("正しいパスワードが入力されました!");
scanner.close();
}
}
パスワードを入力してください: 1111
パスワードを入力してください: 5678
パスワードを入力してください: 1234
正しいパスワードが入力されました!
まとめ
- while 文を使うと、繰り返し処理を簡単に記述できる
breakを使うことでループを途中で終了可能- ユーザーの入力を受け付けるプログラムに適している
while 文を使ったさまざまな応用例を試して、理解を深めましょう!