Java入門⑨ while文 ── 条件が続く間、くり返す
Java入門⑨ while文 ── 条件が続く間、くり返す
前回は「for文(決まった回数くり返す)」をやりました。
今回は、もうひとつのくり返し、while文(ホワイルぶん)です。for文との使い分けが分かると、くり返しの理解がぐっと深まります。
while文とは、「ある条件が成り立つ間、くり返す」しくみです。
for文と、何が違うのか
for文は「5回くり返す」のように、回数が決まっているくり返しが得意でした。
でも、世の中には「何回くり返すか、やってみないと分からない」ことがあります。
「正しいパスワードが入力されるまで、聞き続ける」
「合計が100を超えるまで、足し続ける」
これらは、回数ではなく「条件」でくり返しが決まります。こういうときに使うのが、while文です。料理でいうなら「とろみがつくまで、混ぜ続ける」。回数ではなく、状態で終わりが決まります。
書き方を見てみる
カウントが5になるまでくり返す例です。
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
実行すると、0・1・2・3・4 が表示されます。
while (条件) {
// くり返したい処理
}
while のカッコの中に、続ける条件を書きます。条件が true の間、{ } の中をくり返します。
- 「count(0)< 5?」→ true。中を実行。countを1増やす
- ……くり返す
- 「count(5)< 5?」→ false。終了
結果は、for文の例と同じです。
for文と、書き方をくらべてみる
同じ動きを、for文とwhile文で並べてみます。
// while文
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
// for文
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
実は、for文は「カウンターを使ったwhile文」を、コンパクトにまとめた形なんです。
- for文は、カウンターの準備・条件・増やすを1行にまとめている
- while文は、それらをバラバラに書く
だから、回数が決まっているなら for文、条件しだいなら while文、と使い分けるのが自然です。
「やってみないと分からない」ときに、真価を発揮する
while文が本当に役立つ例です。第5回の Scanner と組み合わせます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String answer = "";
while (!answer.equals("おはよう")) {
System.out.println("合言葉を入力してください");
answer = scanner.nextLine();
}
System.out.println("正解です!");
}
}
「おはよう」と入力されるまで、何度でも聞き続けます。1回で正解するかもしれないし、10回間違えるかもしれない。何回くり返すかは、やってみないと分からない。こういうとき、while文が活躍します。
(!answer.equals("おはよう") は「answerがおはようでない間」。第6回でやった、文字列は equals でくらべるルールを使っています。先頭の ! は「〜でない」の意味です。)
つまずきポイント
for文と同じく、無限ループに注意です。
int count = 0;
while (count < 5) {
System.out.println(count);
// count++ を書き忘れている!
}
count++ を忘れると、count はずっと0のまま。「0 < 5」が永遠に true で、止まらなくなります。
while文は、for文と違ってカウンターを増やす場所が決まっていません。だから「条件を false にする処理」を、自分で必ず中に入れる。これを忘れないようにしましょう。
まとめ
while文は、条件が成り立つ間くり返すしくみ。
while (条件) {
// くり返したい処理
// 条件をいつか false にする処理を忘れずに
}
- 回数が決まっているなら for文
- 条件しだい(何回か分からない)なら while文
次回は、くり返しを途中で「抜ける」「飛ばす」ための、break と continue です。

