Table of Contents
前回は、同じ処理を繰り返し行う際に便利な for文 について紹介しました。
Javaで繰り返し処理に使える構文はもうひとつあります。
whileループ
ある条件が true である場合にループ処理を実行するのが while文 です。
書き方は for文 よりも単純です。
while (ループを実行するかどうかboolean値) {
// ここに繰り返し行いたい処理
}
具体的な while文 の使用例を紹介します。
以下は、キーボードから 0 と入力されるまで、キーボードから値を入力させ続けるプログラムです。
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
System.out.print("整数値を入力してください(0で終了): ");
Scanner scan = new Scanner(System.in);
int inputValue = scan.nextInt();
// inputValue が 0 でなければループ
while (inputValue != 0) {
System.out.println("入力された値は" + inputValue + "でした");
System.out.print("再び整数値を入力してください(0で終了): ");
inputValue = scan.nextInt();
}
scan.close();
System.out.println("終了します");
}
}
実行結果です。0 が入力され、条件が false になるまでプログラムが実行され続けます。
最低一回は処理を実行する do-while
while文 は、条件部分「ループを実行するかどうかboolean値」が初めから false であった場合、一度もループ内の処理を実行しません。
先ほどのプログラムを以下のように書き換えた場合、変数 inputValue の初期値は 0 なので、whileループの処理が一度も実行されません。
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int inputValue = 0;
// inputValue が 0 でなければループ
while (inputValue != 0) {
System.out.print("整数値を入力してください(0で終了): ");
inputValue = scan.nextInt();
System.out.println("入力された値は" + inputValue + "でした");
}
scan.close();
System.out.println("終了します");
}
}
条件に関わらず、初めの一回はループ内の処理を実行してほしいという場合は、do-while文 を使用します。
do-while文 の書き方は以下の通りです。
do {
// ここは一度実行され、2度目以降は条件を満たした場合のみ実行される
} while (ループを実行するかどうかboolean値);
do-while文 の具体的な使用例を以下に示します。
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int inputValue = 0;
// 2回目以降に inputValue が 0 でなければループ
do {
System.out.print("整数値を入力してください(0で終了): ");
inputValue = scan.nextInt();
System.out.println("入力された値は" + inputValue + "でした");
} while (inputValue != 0);
scan.close();
System.out.println("終了します");
}
}
このプログラムの実行結果です。
無限ループに注意
for や while の 「ループを実行するかどうかboolean値」 の部分を、絶対に false にならないものにしてしまった場合、処理が永遠に終わらない無限ループに陥ります。
こうなってしまった場合、プログラムを強制終了させるしかありません。
例えば、次のようなwhileループです。「ループを実行するかどうかboolean値」の部分に直接 true を書いています。
while (true) {
// !ここは永遠に実行され続ける
}
これは極端な例ですが、条件部分がこのような状態になるループを作らないよう気をつけましょう。


