Javaの繰り返し文のひとつが、「do while文」だ。
whileと似ているが、do-whileは一回実行してから条件を確認するので、少なくとも一度は実行されるのが特徴だ。
このページではサンプルプログラムも用意してdo whileの使い方を紹介した。
目次
do while文の使い方
do while文が、他の繰り返し文と異なっているのは、繰り返しが一回は必ず実行されるという点だ。他の繰り返しは、式で表された条件が成り立たなければ一回も繰り返えしが実行されない。
for文のような初期化や更新はない。もし必要ならば、適切な場所にコードを追加することもできる。
do {
文;
} while (式);
書き方の基本はこうだ。
do while文の繰り返し
do while文による繰り返しがどのような順序で実行されていくのか、順を追って説明する。
- ステップ1-文の実行:文が実行される。
- ステップ2-実行が正常に終了すればステップ3へ進む。しかし、実行が中断されれば繰り返しは終わる。
- ステップ3-式の評価:式がtrueであれば、ステップ1から繰り返す。式がfalseならば、繰り返しは終わる。
do while文の繰り返しを、いくつかのケースに分けてどんな動きをするか考えてみよう。最初に、式がtrueになるケースだ。
1 2 3 4 |
number = 1; do { number ++; } while (number < 5); |
このケースでは、numberがwhile文の中でインクリメントされて、5に到達するとdo while文の繰り返しから抜け出す。では、number = 4のケースはどうだろう。
1 2 3 4 |
number = 4; do { number ++; } while (number < 5); |
まだ、while文の中でインクリメントされ、5になると繰り返しを終える。では、number = 5はどうだろうか。
1 2 3 4 |
number = 5; do { number ++; } while (number < 5); |
numberが5を超えても、do while文の中の繰り返し一回は実行される。
では、この点をサンプルプログラムで確認してみよう。
繰り返しの実行を確認するサンプルプログラム
このサンプルプログラムは、numberに代入する初期値を変え、do while文の中でnumberの値を表示することによって繰り返しの様子を確認できるようにしたものだ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class DoWhileFromOneToFive { public static void main(String[] args) { int number = 1;//[1] do { number ++;//[2] System.out.println("[3] number = " + number); } while (number < 5);//[4] number = 4;//[5] do { number ++;//[6] System.out.println("[7] number = " + number); } while (number < 5);//[8] number = 5;//[9] do { number ++;//[10] System.out.println("[11] number = " + number); } while (number < 5);//[12] } } |
実行結果
[3]は2から5まで表示されているので、numberが1から始まると5になったとき繰り返しが終わることが分かる。[7]も同じで、5になったとき繰り返しが終わっている。[11]は、numberの値が5を超えた6でも表示されている。つまり、繰り返しが一回は必ず行われることが分かる。
1 2 3 4 5 6 |
[3] number = 2 [3] number = 3 [3] number = 4 [3] number = 5 [7] number = 5 [11] number = 6 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1]変数numberを宣言し、初期値の1を代入する。
- [2][3][4]numberを5になるまでインクリメントし、numberの表示を繰り返す。
- [5]変数numberに4を代入する。
- [6][7][8]numberを5になるまでインクリメントし、numberの表示を繰り返す。
- [9]変数numberに5を代入する。
- [10][11][12]number5を5になるまでインクリメントし、numberの表示を繰り返す。
do whileを使うべきケースのサンプルプログラム
このサンプルプログラムは、どんなケースでwhileよりdo whileを使うべきかを示している。どんな条件であっても必ず実行したい文がある場合は、do whileを使うべきだ。
たとえば、どんな条件であっても必ず繰り返しの中でnumberをインクリメントしたいなら、do whileを使って、その繰り返しの中にnumberのインクリメントを書けばよい。
他方、whileを使った場合は、条件によっては実行されない場合がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class IncrementNumberInWhileOrDoWhile { public static void main (String[] args){ int number = 7;//[1] while (number < 5) {//[2] number ++;//[3] System.out.println("[4] while -> number = " + number); } number = 7;//[5] do {//[6] number ++;//[7] System.out.println("[8] do while -> number:" + number); } while (number < 5);//[9] } } |
実行結果
実行結果は、do whileが条件:「numberが5より小さい場合に繰り返す」であっても、numberの値が8を表示している。これは、条件の範囲を超えて、numberのインクリメントと表示を行われたことを示している。
他方、whileはインクリメントしたnumberの値を表示していない。
1 |
[8] do while -> number:8 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] 変数numberを宣言し、1を代入する。
- [2] numberが5以下なら、[2]-[5]を繰り返す。
- [3] numberをインクリメントする。
- [4] numberを表示する。
- [6] numberに7を代入する。
- [7] numberをインクリメントする。
- [8] numberを表示する。
- [9] numberが5以下なら、[7]-[9]を繰り返す。
まとめ
このページではJavaのdo-while文についてお伝えした。使い勝手のいい繰り返し文だ。ぜひ使いこなせるようにしておこう。