Javaのwhile文について解説します。
- Javaのwhile文の書き方が知りたい。
- while文はどんな時に使う?
このような内容について解説します。
私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
これからプログラミングを始める方に向けて、少しでも分かりやすく解説していきたいと思います。
Web開発においてwhile文は、for・for-each文よりも出番がないかもですが、
Javaのループさせる手段の1つとして「こんなことができるんだ」と頭の片隅に覚えておくと良いと思います。
それでは行きましょう!
目次
while文の書き方
基本的な書き方
while文の基本的な書き方について、処理イメージと表で表してみました。
処理イメージ:

名称 | 使い方 | 意味 |
---|---|---|
条件式 | i < 5 | ループを続けるための条件を記述する |
次にソースコードで書いてみます。
for文とは違い、あらかじめ「Integer i = 0;」などの変数を用意しておく必要があります。
また、while文の実行する処理の中で「i++;」で1つ繰り上げるなど条件で使用する変数を変化させる必要があります。
// あらかじめ変数を用意しておく Integer i = 0; // 「5」より下の数字のときは実行 while (i < 5) { System.out.print(i); // 1つ繰り上げる i++; }
実行結果:

whileの条件式が「i < 5」なので、「01234」が表示できました。
ちなみに、最初の条件の判定でfalseの場合、ループは1回も実行されませんので注意ください。
無限ループには気を付けよう
もし、先ほどのソースコードで「1つ繰り上げる」記述をしなかった場合、while文から抜けられなくなり無限ループとなってしまいます。
Integer i = 0; while (i < 5) { System.out.print(i); // 1つ繰り上げる処理を入れない }
実行結果:

while文はfor文の増減式とは違い、決められた場所に書く場所がないため、ついつい忘れがちになりますので注意ください。
break(抜け出す)
while文を途中で抜け出すには、「break;」を使用します。
先ほどの「基本的な書き方」のソースコードに、if文で「3」になったら抜け出すように変更してみます。
Integer i = 0; while (i < 5) { // 「3」の時にループを抜け出す if (i == 3) { break; } System.out.println(i); i++; }
実行結果:

「3」でループを抜け出しましたので、「012」までが表示されました。
continue(スキップ)
while文の途中でスキップするときは、continueを使用します。
if文で「3」のときだけスキップしてみます。
continueをすると、echoの次の「i++;」を通らなくなるので、無限ループにならないようにcontinue手前で1つ繰り上げる必要があります。
Integer i = 0; while (i < 5) { // 「3」の時はスキップする if (i == 3) { // 無限ループにならないよう1つ繰り上げる i++; continue; } System.out.println(i); i++; }
実行結果:

do while文の書き方
Javaのwhile文には、他に「do while文」という書き方があります。
while文とは違い、必ず1回は処理を実行して処理の最後で条件式の判定をおこないます。
処理イメージ:

ソースコードで書いてみます。
//あらかじめ変数を用意しておく Integer i = 0; do { System.out.println(i); // 1つ繰り上げる i++; } while (i < 5); //「5」より下の数字のときは次回も実行
実行結果:

while文のソースコードと同じく、5より下の数字「01234」が表示されました。
while文はどんな時に使うのか
Web開発においてですが、Javaのwhile文はあまり使う場面がないかもしれません。
ほとんどのループ処理が、for文、foreach文で足りるものが多いです。
ただ、せっかくなのでwhile文を使って配列の中身を出力してみましょう。
配列の中身を出力してみる
while文で配列を扱うには、ArrayListクラスをIteratorクラスに変換する必要があります。
そして、Iteratorクラスの「hasNext()、next()」メソッドをすることでwhile文で配列をループさせることができます。
// 配列を宣言 ArrayList<String> list = new ArrayList<String>(Arrays.asList("バナナ", "イチゴ", "すいか")); // Iteratorに変換 Iterator<String> it = list.iterator(); // hasNextで値がある場合はループを継続する while (it.hasNext()) { // nextで値を取得 String value = it.next(); System.out.println(value); }
実行結果:

まとめ
いかがだったでしょうか。
Javaのwhile文について次の内容で解説しました。
- while文の書き方(基本的な書き方、無限ループ、breakで抜け出し、continueでスキップ)
- do while文の書き方
- while文はどんな時に使うのか(配列の中身を表示)
while文はあまり使うことがないという記事を書きましたが、while文の方がソースコードがスッキリと書ける場合もありますので、状況によってfor、foreach文と使い分けると良いでしょう。