Java超|while文のしくみ

条件を見ながら、必要なだけくり返す。
while文を覚えると、Javaの処理は「決まった回数」だけでなく、「状態が続く間」動かせるようになる。

これまで学んできた for文 は、何回くり返すかがある程度はっきりしている処理を書くのに向いていました。

たとえば、

やりたいことfor文が向いている理由
5回表示する回数がはっきりしている
1から10まで順番に処理する開始値と終了値が分かりやすい
入力された数だけ記号を表示する回数を数えながら処理できる

このように、for文は「回数を数えながらくり返す」場面でとても便利です。

一方で、プログラムの中には「最初から回数は決まっていないけれど、ある条件が成り立っている間は続けたい」という処理もあります。

たとえば、まだ任務が終わっていない間は確認を続ける。
目標に達するまで修行を続ける。
正しい値が入力されるまで待つ。
敵の気配が残っている間は警戒を続ける。

このようなときに活躍するのが while文 です。

while文は、まず条件を確認し、その条件が true である間だけ処理をくり返します。
条件が false になった時点で処理を終えるため、回数よりも「状態」や「条件」を基準にした繰り返しに向いています。

ドラゴンボール風にたとえると、while文は「条件が続く間だけ型の確認を続ける修行」です。

まだ修行条件を満たしているなら続ける。
条件を満たさなくなったら修行を終える。

このように、while文は「今も続けるべきか」を毎回確認しながら進む繰り返しです。

while文とは何か

while文は、条件が true である間、同じ処理を何度もくり返すための構文です。

基本の形は次のようになります。

while(条件){
    文;
    ...
}

この構文では、最初に条件を調べます。

条件が true なら、ブロックの中の文を上から順に実行します。
ブロック内の処理が終わったら、もう一度条件を調べます。
この流れを、条件が false になるまでくり返します。

条件の結果while文の動き
trueブロック内の処理を実行する
falsewhile文を終了する

つまり、while文は「条件が続いている間だけ処理を続ける仕組み」です。

ドラゴンボール風にたとえると、while文は「任務確認が必要な間だけ、同じ確認動作を続ける型」です。

確認が必要なら続ける。
確認が不要になったら終わる。

この判断を毎回行います。

while文の流れ

while文の処理の流れは、次のようになります。

手順内容
1条件を確認する
2条件が true ならブロック内の処理を実行する
3処理が終わったら、もう一度条件を確認する
4条件が false になったら終了する

ここで大切なのは、while文は処理を始める前に条件を確認するという点です。

そのため、最初の時点で条件が false なら、ブロックの中は1回も実行されません。

たとえば、次のような考え方です。

while(修行が終わっていない){
    修行を進める;
}

修行が終わっていないなら、修行を進めます。
修行を進めたあと、もう一度「まだ終わっていないか」を確認します。

すでに修行が終わっているなら、最初から何も実行されません。

ドラゴンボール風にたとえると、任務前の確認で「まだ確認が必要か」を先に見るようなものです。

必要なら確認を続けます。
必要なければ、その確認作業は行わず次の行動へ進みます。

while文は条件でくり返す

for文とwhile文は、どちらも繰り返し処理に使えます。
ただし、得意な場面が少し違います。

向いている場面
for文回数が決まっている繰り返し
while文条件が成り立つ間だけ続ける繰り返し

for文は、何回くり返すかが見えやすい構文です。

たとえば、5回表示する、1から10まで順番に処理する、といった処理では for文 が自然です。

一方、while文は「どんな条件の間、続けるのか」が見えやすい構文です。

やりたいことwhile文の考え方
目標の戦闘力に届くまで修行する目標未達の間は続ける
体力が残っている間だけ戦う体力がある間は続ける
終了が選ばれるまでメニューを出す終了されていない間は続ける
条件を満たしている間だけ確認する条件が true の間は続ける

ドラゴンボール風にたとえると、for文は「10回素振りする」のように回数が決まった修行です。

while文は「気の乱れが残っている間は呼吸を整える」のように、状態を見ながら続ける修行です。

図:while文は条件を先に確認する

この図が示していること

この図では、while文が条件判定から始まることを示しています。

まず i <= 5 のような条件を確認します。
条件が true なら、ブロック内の処理を実行します。

そのあと i++ のように値を更新し、もう一度条件を確認します。

条件が false になったら、while文は終了します。

ここから分かることは、while文は毎回条件を確認しながら進む繰り返しだということです。
また、最初から条件が false の場合、ブロック内の処理は1回も実行されません。

while文を確認する

ここでは、while文を使って、確認メッセージを5回表示するプログラムを見ていきます。

ファイル名:Sample5.java

class Sample5
{
    public static void main(String[] args)
    {
        int i = 1;

        while(i <= 5){
            System.out.println(i + "回目の確認です。今日も型の修行を進めましょう。");
            i++;
        }

        System.out.println("確認メッセージの表示が終わりました。");
    }
}

実行結果は次のようになります。

1回目の確認です。今日も型の修行を進めましょう。
2回目の確認です。今日も型の修行を進めましょう。
3回目の確認です。今日も型の修行を進めましょう。
4回目の確認です。今日も型の修行を進めましょう。
5回目の確認です。今日も型の修行を進めましょう。
確認メッセージの表示が終わりました。

このプログラムでは、まず i に 1 を入れています。

int i = 1;

この i は、何回目の確認かを数えるための変数です。

そのあと、while文で i <= 5 を確認しています。

while(i <= 5)

i が 5 以下である間は、ブロックの中の処理を実行します。

System.out.println(i + "回目の確認です。今日も型の修行を進めましょう。");
i++;

メッセージを表示したあと、i++ によって i を1増やします。

この i++ があることで、条件 i <= 5 が少しずつ false に近づいていきます。

Sample5.java の動き

Sample5.java の流れを表で追うと、次のようになります。

i の値条件 i <= 5実行内容
1true1回目のメッセージを表示し、i++
2true2回目のメッセージを表示し、i++
3true3回目のメッセージを表示し、i++
4true4回目のメッセージを表示し、i++
5true5回目のメッセージを表示し、i++
6falsewhile文を終了

i が 1 から 5 の間は、条件 i <= 5 が true です。
そのため、確認メッセージが表示されます。

5回目の処理が終わると、i++ によって i は 6 になります。

次に条件 i <= 5 を確認すると、6 <= 5 は false です。

そのため、while文は終了し、次の文へ進みます。

System.out.println("確認メッセージの表示が終わりました。");

この文は while文 の外にあるため、繰り返しが終わったあとに1回だけ表示されます。

ドラゴンボール風にたとえると、1回目から5回目まで型の確認を行い、6回目に入ろうとしたところで「もう条件を満たしていない」と判断して修行を終える流れです。

while文の大事なポイント

Sample5.java で特に大切なのは、条件がいつか false になるようにしていることです。

今回のコードでは、次の行があります。

i++;

この処理によって、i の値は1ずつ増えます。

処理i の変化
開始時1
1回目のあと2
2回目のあと3
3回目のあと4
4回目のあと5
5回目のあと6

i が増えることで、最初は true だった i <= 5 が、最終的には false になります。

while文では、条件だけでなく、その条件が変化する仕組みも一緒に考えることが大切です。

ドラゴンボール風に言えば、修行回数の札を1つずつ進めているから、いつか「終了条件」に届きます。

条件を変化させないとどうなるか

while文では、条件が true のまま変わらないと、処理が終わらなくなることがあります。

これを無限ループといいます。

たとえば、次のようなコードは注意が必要です。

int i = 1;

while(i <= 5){
    System.out.println(i + "回目の確認です。");
}

このコードでは、i の値を増やす処理がありません。

そのため、i はずっと 1 のままです。

項目状態
初期値i は 1
条件i <= 5
値の変化i が変わらない
結果条件がずっと true のままになる

i が 1 のままなら、i <= 5 は何度確認しても true です。

その結果、while文は終わらず、同じ処理を何度も実行し続けます。

ドラゴンボール風にたとえると、「5回まで修行」と決めているのに、回数札を進め忘れている状態です。

回数札がずっと1のままなので、いつまでも条件を満たしてしまい、修行が終わりません。

図:i++ がないと無限ループになりやすい

この図が示していること

この図では、while文で値を更新することの大切さを示しています。

左側では、i++ によって i の値が増えていきます。
その結果、最終的に i は 6 になり、i <= 5 が false になります。
そのため、while文は終了します。

右側では、i++ を忘れているため、i が 1 のまま変わりません。
i <= 5 はずっと true のままなので、while文が終わらない状態になります。

ここから分かることは、while文では「条件がいつか false になるように値を変化させる」ことがとても重要だということです。

for文との関係

while文とfor文は、似た処理を書けることがあります。

Sample5.java のように、i を1から5まで増やしながら表示する処理は、for文でも表せます。

for(int i = 1; i <= 5; i++){
    System.out.println(i + "回目の確認です。今日も型の修行を進めましょう。");
}

このfor文は、初期化、条件式、変化式が1行にまとまっています。

一方、while文では、それぞれを別々の場所に書きます。

int i = 1;

while(i <= 5){
    System.out.println(i + "回目の確認です。今日も型の修行を進めましょう。");
    i++;
}

比較すると、次のようになります。

比較項目for文while文
初期化for の丸かっこの中に書くwhile の前に書く
条件for の丸かっこの中に書くwhile の丸かっこの中に書く
変化for の丸かっこの中に書くブロック内に書くことが多い
見えやすいもの回数の管理条件による継続
向いている場面回数が明確条件や状態が主役

今回のように、回数がはっきりしている処理なら for文 でも自然に書けます。

ただし、while文を使うと、「条件が true の間だけ続ける」という考え方がはっきり見えます。

ドラゴンボール風にたとえると、for文は「5回素振りする」と最初から回数を決めた修行です。

while文は「まだ条件を満たしている間は確認を続ける」という状態重視の修行です。

while文では最初に条件を調べる

while文の重要な特徴として、最初に条件を確認する点があります。

たとえば、次のようなコードを考えます。

int i = 10;

while(i < 5){
    System.out.println("表示されます。");
}

この場合、最初の時点で i < 5 は false です。

i の値条件 i < 5ブロック内の処理
10false1回も実行されない

while文は、条件を確認してから処理を始めます。
そのため、最初から条件が false なら、ブロックの中は一度も実行されません。

この性質は、とても大切です。

while文は「条件を満たしているときだけ始まる繰り返し」だと考えると分かりやすいです。

ドラゴンボール風にたとえると、すでに修行終了の合図が出ているなら、型の確認は始まりません。
まず条件を見るからこそ、不要な処理を行わずに次へ進めます。

図:for文とwhile文の違い

この図が示していること

この図では、for文とwhile文の違いを比較しています。

for文は、回数が決まっている繰り返しに向いています。
初期化、条件式、変化式が for の丸かっこの中にまとまるため、何回くり返すのかを管理しやすいです。

while文は、条件が true の間だけ続ける繰り返しに向いています。
回数よりも、「まだ続ける条件を満たしているか」を中心に考えるときに使いやすいです。

ここから分かることは、for文とwhile文はどちらも繰り返しに使えるものの、見えやすいポイントが違うということです。

while文の見方のコツ

while文を読むときは、次の3つをセットで確認すると理解しやすくなります。

注目する点確認する内容
初期値変数がどこから始まるか
条件どこまで続くのか
変化条件がどう変わっていくか

Sample5.java なら、次のように整理できます。

注目点内容
初期値i = 1
条件i <= 5
変化i++

この3つを見ると、i が1から始まり、5以下の間だけ処理され、1回ごとに i が増えていくことが分かります。

つまり、5回実行されたあと、i が6になって終了します。

while文が読みにくいと感じたときは、いきなり全体を理解しようとせず、初期値、条件、変化の3つに分けて見ると整理しやすくなります。

ドラゴンボール風にたとえると、修行を読むときは、

見ること修行でのイメージ
初期値何回目から始まるか
条件いつまで続けるか
変化回数札がどう進むか

を確認するようなものです。

while文で気をつけたいこと

while文はシンプルですが、注意点もあります。

よくあるミス内容
更新を書き忘れる無限ループになる
条件式を間違える繰り返し回数がずれる
初期値を誤る最初から実行されないことがある
ブロックの範囲を見落とすどこまで繰り返すか分かりにくくなる
条件がいつ false になるか考えていない終了しない処理になりやすい

特に多いのは、更新を書き忘れることです。

for文では、i++ のような変化式が丸かっこの中にまとまっていることが多いです。
しかし、while文では更新処理をブロック内に書くことがよくあります。

そのため、うっかり i++ を忘れると、条件が変わらず無限ループになりやすいです。

while文を書くときは、次のように確認すると安心です。

確認すること理由
初期値は正しいか最初の条件判定に影響する
条件式は正しいか続ける範囲を決める
値は更新されるかいつか終了できるようにする
false になるタイミングはあるか無限ループを防ぐ
ブロックの範囲は正しいか繰り返す処理を明確にする

ドラゴンボール風にたとえると、while文では「修行終了の条件に近づいているか」を毎回確認することが大切です。
回数札や状態が変わらなければ、いつまでも修行が終わりません。

while文が役立つ場面

while文は、回数よりも条件や状態を中心にした繰り返しで役立ちます。

たとえば、次のような場面です。

場面while文が向いている理由
ユーザーが終了を選ぶまでメニューを表示する終了が選ばれるまで回数が決まらない
正しい値が入力されるまで受け付ける何回入力されるか分からない
条件を満たすまで計算を続ける目標に届くまで繰り返す
データが残っている間だけ読み込むデータの数や終わりが状態で決まる
任務が完了するまで確認する完了状態になるまで続ける

for文は「何回くり返すか」がはっきりしているときに便利です。

while文は「いつ終わるかが条件で決まる」ときに便利です。

ドラゴンボール風にたとえると、while文は「敵の気配がある間は警戒を続ける」「気が整うまで集中を続ける」「任務完了の合図が出るまで確認を続ける」といった処理に向いています。

while文を学ぶ意味

while文を使えるようになると、プログラムの流れを「回数」だけでなく「状態」でも考えられるようになります。

これはJavaの学習を進めるうえで、とても大切です。

for文は、回数が見やすい繰り返しです。
while文は、条件の流れが見やすい繰り返しです。

見方向いている文
何回繰り返すかを中心に考えるfor文
どの条件の間続けるかを中心に考えるwhile文

この違いを理解して使い分けられるようになると、書けるプログラムの幅が広がります。

while文で特に大切なのは、次の3つです。

大切なこと内容
条件が true の間くり返す条件が続く限り処理する
最初に条件を確認するfalse なら1回も実行されない
条件が変化するように書くいつか終了できるようにする

ドラゴンボール風にたとえると、while文は「状態を見ながら続ける型」です。

何回やるかよりも、まだ続ける条件があるかを重視します。

この感覚をつかんでおくと、この先のループ処理や、より実践的なJavaプログラムの理解につながります。