処理を行ってから繰り返しに入る『do~while文』

処理を行ってから繰り返しに入る『do~while文』【ゼロから始めるJavaの基礎~その23~】

前ページでは『while文』のご紹介をしました。『while文』の兄弟のような構文に『do~while文』と呼ばれる構文があります。
『do~while文』も『while文』と同様に繰り返しの処理を作る際に使える構文です。

『while文』と『do~while文』の違いを簡単にまとめると以下のように説明できます。

『while文』と『do~while文』の違い

while文:ループ開始時の条件判定の結果が『false』の場合、繰り返しの中に記述された処理は1度も実行されない。

do~while文:ループ開始時の条件判定の結果が『false』でも、1回は繰り返しの中に記述された処理が実行される。

言葉で説明されてもいまいち分かりづらいかもしれませんので、サンプルを見てみましょう。

【サンプル】

int i = 11;

while(i < 10) {
	System.out.println((i + 1) + "回目の繰り返し");
	i++;
}

1行目で宣言されている変数『i』には11という値が代入されています。
3行目の条件判定は『i』が10より小さいかを判定していますので、結果は『false』となり、繰り返しの中に記述されている処理は1回も実行されないことが分かります。

これを最初の1回だけは実行されるように、『do~while文』に書き換えると次のサンプルのようになります。

【サンプル】

int i = 11;

do {
	System.out.println((i + 1) + "回目の繰り返し");
} while (i < 10);

【実行結果】

実行結果を見ると、『do{ }』という記述の括弧の中に記述されている処理が1度だけ実行されているのが分かりますね。
それでは『do~while文』の構文と処理の流れを見ていきましょう。

【構文】

do {

繰り返し行いたい処理;

} while (条件式);

『do{ }』のブロックには繰り返し行いたい処理を記述します。
このブロックの処理が最初に行われる際には条件判定は行われません。

『do{ }』ブロックの処理が終わると、その直後に記述されている『while(条件式)』で条件判定が行われます。
この判定が『true』の場合は、再度『do{ }』ブロック内に記述されている処理が実行されます。
『false』の場合は、そのまま『do~while文』のブロックを抜けます。

【サンプル】

int i = 11;

do {
	System.out.println((i + 1) + "回目の繰り返し");
} while (i < 10);

【実行結果】

先ほど取り上げたサンプルをもう一度見てみましょう。
何周目の繰り返しかを保管しておく目的で宣言した変数『i』の値は11です。

5行目の条件式は『i < 10』となっていますので、判定結果は『false』になりますが、実行結果には『12回目の繰り返し』という文字列が表示されています。

このように、『do~while文』は繰り返し行いたい処理を最初に1回実行してから、その次の繰り返しを行うかどうかの判定を行います。

条件式が初めから『false』となる場合に1回も処理を行わないのであれば『while文』を、初めから『false』となる場合でも最低1回は処理を行いたい場合は『do~while文』を使うということを覚えておきましょう。