【Java】do-while文で繰り返しの前に先に処理を行う!使い方とwhile文との違いを解説!
do-while文を使って処理を行っていますか?
do-while文は、終了制御ループです。
ループだからfor文やwhile文と同じじゃないのか?と思うかもしれませんが、for文のループやwhile文のループとは異なります。
while文はある条件がtrueである限り繰り返し処理を行います。
それに対してdo-while文は繰り返し処理の条件を判断する前に処理を行います。
また繰り返し処理で使用していた必要のない処理を省略するbreak句やcontinue句はdo-while文でも使用できます。
今回は、
⚫︎ do-while文とは
⚫︎ break
⚫︎ continue
というdo-while文の使い方や
⚫︎ while文とdo-while文の違い
について解説していきます。
目次
do-while文とは
do-while文とは繰り返し処理を行う文法となります。
条件式がtrueである限り、繰り返し処理を行うwhile文と比べて、do-while文は繰り返し処理の条件を判断する前に処理を行います。
do-while文の書き方
do-while文の構文は下記となります。
1 2 3 4 5 |
do { 処理内容(更新式) } while(条件式); |
do-whileループのさまざまな部分は次のとおりになります。
⚫︎ 条件式:
この式で処理を行うか、行わないかの判断をする
条件がtrueと評価された場合、ループの本体を実行し、処理内容を実行します。
それ以外の場合は、whileループを終了します。
1 |
i <= 10 |
⚫︎ 更新式:
ループ本体を実行した後、この式はループ変数をある値だけインクリメント/デクリメントする
1 2 |
i ++; i --; |
do-while文の動きを見てみます。
⚫︎ 1.制御はdo-whileループに入ります。
⚫︎ 2.ループの本体内の処理内容が実行されます。
⚫︎ 3.更新が行われます。
⚫︎ 4.フローは条件にジャンプします
⚫︎ 5.状態はテストされています。
⚫︎ 5-1.条件がtrueになる場合は、手順6に進みます。
⚫︎ 5-2.Conditionの結果がfalseの場合、フローはループの外に出ます
⚫︎ 6.フローはステップ2に戻ります。
while文の場合は先にループするかしないか判断をした後に処理を行いますが、do-while文は先に処理を行い、ループをするかしないかになります。
つまり、条件がfalseの場合でも、条件がテストされる前にコードブロックが実行されるため、ループは常に少なくとも1回は実行されます。
繰り返しの前に先に処理を行うサンプルコード
繰り返しの前に先に処理を行うサンプルコードを見てみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
class Main { public static void main(String args[]) { int i = 1; do { System.out.println("Hello Worldは" + i + "回目"); i++; } while (i < 6); } } |
出力結果
Hello Worldは1回目
Hello Worldは2回目
Hello Worldは3回目
Hello Worldは4回目
Hello Worldは5回目
プログラムは次のように実行されます。
1.プログラムが開始されます。
2. iは値1で初期化されます。
3.実行がループに入る
3.a)「Hello Worldは1回目」が最初に表示されます。
3.b)更新が行われます。今iは2です。
4.状態がチェックされます。(2 < 6)の場合はtrueになります。
5.実行がループに入る
5.a)「Hello Worldは2回目」が2回目に表示されます。
5.b)更新が完了しました。現在、i = 3です。
6.状態がチェックされます。(3 < 6)はtrueになります。
7.実行がループに入る
7.a)「Hello Worldは3回目」が3回目に表示されます
7.b)更新が行われます。今私は4です。
8.状態がチェックされます。(4 < 6)はtrueになります。
9.実行がループに入る
9.a)「Hello Worldは4回目」が4回目に表示されます
9.b)更新が行われます。現在、i = 5です。
10.状態がチェックされます。(5 < 6)はtrueになります。
11.実行がループに入る
11.a)「Hello World51回目」が5回目に表示されます
11.b)更新が完了しました。今私は6です。
12.状態がチェックされます。(6 < 6)はfalseになります。
13.フローはループの外に出ます。
繰り返し処理を操作するサンプルコード
break句
break句を使って繰り返し処理を強制的に終了させてみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Main { public static void main(String args[]) { int x = 1; int sum = 0; do { sum += x; x = x + 1; if (x == 5) { break; } } while (x < 10); System.out.println("合計: " + sum); } } |
出力結果
合計: 10
continue句
continue句を使って繰り返し処理を一時的にスキップさせてみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class Main { public static void main(String[] args) { int x = 0; int sum = 0; do{ x++; if(x == 5){ continue; } sum += x; }while(x < 10); System.out.println("合計: " + sum); } } |
出力結果
合計:50
while文とdo-while文の違い
while文とdo-while文の違いは、「繰り返し条件の判断を先に行うか、後に行うか」という点にあります。
どちらも同じように思えますが、繰り返し条件の判断次第で処理の結果が変わってくるので、繰り返し条件の判断は前後どちらが良いのかを注意して使い分ける必要があります。
しかし、必ず1回実行させたい処理がある場合は、do-while文を使うようにしましょう。
今回のポイント
do-while文で繰り返しの前に先に処理を行う
⚫︎ do-while文は、繰り返し処理の条件を判断する前に処理を行う
⚫︎ continue句は繰り返し処理を一時的にスキップできる
⚫︎ break句は繰り返し処理を強制的に抜け出すことができる
⚫︎ while文とdo-while文の違いは、「繰り返し条件の判断を先に行うか、後に行うか」であり、必ず1回実行させたい処理がある場合はdo-whileを使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。