Javaコラム Javaエンジニアのためのお役立ちコラム

Javaのwhile文とdo-while文の使い方とは?|ループ構文を使いこなそう

2020年10月15日

SE
ループ構文にはどのような種類があるのでしょう?

PM
ループ構文には主に3つの構文があります。実際のコードを見ていきましょう。

Javaのループ構文の種別とは?


Javaで繰り返し(ループ)処理を表す構文には、for文、while文、do-while文があります。

for文は繰り返し回数を制御するカウンタ変数を持ち、主に決まった回数を繰り返す処理に使われます。例えば、変数iをカウンタ変数とし、n回繰り返すループをfor文で記述すると次のようになります。

 

これに対して、while文やdo-while文は、判定条件が成立する間、繰り返しを続ける構造です。whileという英単語は「~の間」を意味します。以下では、Javaのwhile文とdo-while文について、コードの書き方や使い方を解説します。

Javaのwhileループの使い方

while文では、ループ本体の実行前に指定された条件式を評価し、条件が成立する間、処理を繰り返します。Javaのwhile文の記法は、次の形です。

 

whileループでは次のようなステップで、条件式が真である間、処理を繰り返します。

whileループのコード例:その1

ループカウンタを用いた繰り返し処理を、whileループで記述したJavaコード例を示します。カウンタ変数iを0で初期化した後、iが10未満の間、iを1ずつ増加させながらループ処理を実行します。

 

同様の処理をfor文で記述する場合には、forの後に変数iの初期化、条件判定、更新を記述します。これに対して、whileの直後に記述するのは条件判定の部分だけです。

カウンタ変数iの初期化をループ開始前に記述することや、更新文をループ本体内の最後に記述するのを忘れないようにしましょう。

whileループのコード例:その2

whileループに向いている処理は、ループ開始時に繰り返し回数が不明な場合です。例えば、データを読み込み、データがある限り処理を続ける場合などに、よく使われます。

テキストファイルから文字を1つずつ読み込み、表示を繰り返すJavaコードの例を示します。

このコードでは、test.txtという名前のファイルから、文字を1文字ずつ読み込み、変数chに格納しています。

ループ内でchを処理(この場合はprintlnで表示処理)したら、次の文字を読み込みます。最後の文字まで読み込みが終了したら、次のreadの戻り値は-1になり、whileループを終了します。

テキストファイル内に”XYZ”と記述し、実行した結果は、次のようになります。

Javaのdo-whileループの記述方法

do-while文では、ループ本体の実行後に指定された条件式を評価し、条件が成立する間、処理を繰り返します。Javaのdo-while文の記法は、次の形です。

 

最後にセミコロンが必要ですので、忘れないようにしましょう。

do-whileループでは、次のようなステップで、条件式が真である間、処理を繰り返します。

条件式を後で評価するため、ループ本体は必ず1回は実行されます。これは、最初に条件式を評価するfor文やwhile文と異なる点です。

do-whileループのコード例

次のJavaコード例は、繰り返し毎に整数値を増加させていき、ある値を超えたら終了する処理をdo-while文で記述したものです。

 

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

do-while文とwhile文の比較

上のコード例で、valueの初期値を35に変更してみましょう。条件式はvalueが30未満です。実行結果は次のようになります。

 

次に、同じ条件式のwhileループを書いてみましょう。

 

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

 

このように、初期値が条件を満たしていない場合、while文ではループの繰り返しは実行されませんが、do-while文では1回分が必ず実行されることがわかります。

ループを記述する際には、繰り返し判定のタイミングを意識して、正しい条件判定を行うコードを書いてください。

while文による無限ループの記述方法

whileループの条件式にtrueを記述すると、条件が常に成立し、無限ループになります。コード例を示します。

 

実行すると、Hello!の出力が止まらずに続きます。Ctrl+Cで中断して下さい。

無限ループの抜け方

trueを条件式に使ったwhileループの記法は、ループ本体内で条件判定を行い、条件を満たした場合にループを抜け出すために、利用するのが一般的です。

ループを抜け出すには、break文やreturn文を用います。breakやreturnでループを抜け出せば、無限ループではなくなります。

break文を用いた記述は、次のようになります。条件を満たすとwhileループの外に抜けます。

 

return文を用いた記述は、次のようになります。return文では、メソッドの処理を終了し、呼び出し元に戻ります。

条件trueを使ったwhile文のコード例

条件式がtrue のwhile文で、判定条件を満たしたらループを抜け出すJavaコードの例を示します。

次のコードでは、ループ内で乱数を発生させ、0から99の整数値を取得します。乱数で生成した値が当たりの値(SPECIAL_VAL)と一致したら、ループを抜け出し終了します。

 

SE
構文の組み合わせでループさせ続けたり、無限ループさせることも可能なんですね。

PM
指定した条件の元で繰り返すことができます。実際にコードを書いて覚えていきましょう。

Javaのwhileの使い方まとめ

Javaのwhile文とdo-while文は、指定した条件が成立する間、繰り返しを続けるループ構文ですが、これらは条件判定のタイミングが異なります。

while文では繰り返し本体の処理の前に、do-while文は繰り返し本体の処理後に、指定された条件を判定し、繰り返しを続けるかどうかを決めます。

条件式をtrueに指定すると、無限ループを記述することができます。一定回数の繰り返しを実行するfor文と合わせて、Javaのループ構文を使いこなしてください。


Java分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)