
Java道|do~while文のしくみと使い方
まず1回やってみる。
do~while文を覚えると、Javaの繰り返し処理を「実行してから判断する」形で書けるようになる。
これまでに、for文とwhile文を使った繰り返し処理を学んできました。
for文は、何回繰り返すかがはっきりしている処理に向いていました。
たとえば、5回表示する、1から10まで順番に処理する、指定した回数だけ記号を出す、といった場面です。
while文は、条件を先に確認してから処理を行う繰り返しでした。
そのため、最初の時点で条件が false なら、ブロックの中は1回も実行されません。
今回学ぶ do~while文 は、while文とよく似ていますが、処理の順番が少し違います。
do~while文では、まずブロック内の処理を1回実行し、そのあとで条件を確認します。つまり、条件が最初から false であっても、最初の1回は必ず実行されます。この特徴により、メニューを最低1回は表示したい場合や、入力をまず受け付けてから続けるか判断したい場合に使いやすい構文です。この記事では、指定内容に沿って Sample6.java のみを使い、do~while文の基本、while文との違い、注意点、プログラムの基本構造とのつながりを、鬼滅の刃風の世界観にたとえながら整理します。
鬼滅の刃風にたとえると、do~while文は「まず一度、型を出してから、続けるかどうかを判断する修行」です。
while文は「条件を見てから型を出す」。
do~while文は「まず型を出して、そのあと続行するか確認する」。
この順番の違いが、do~while文のいちばん大切な特徴です。
do~while文とは何か
do~while文は、ブロックの中の処理を先に実行し、そのあとで条件を確認する繰り返し文です。
基本の形は次のようになります。
do{
文;
...
}while(条件);↓クリックすると拡大表示されます。

この構文では、まず do のブロック内を実行します。
そのあとで、while の条件を確認します。
条件が true なら、もう一度 do ブロックに戻って処理を繰り返します。
条件が false なら、do~while文を終了します。
| 条件の結果 | do~while文の動き |
|---|---|
| true | もう一度ブロック内の処理を実行する |
| false | 繰り返しを終了する |
ここで特に大切なのは、条件確認が後にあることです。
そのため、do~while文では、最初の1回は必ず処理されます。
鬼滅の刃風にたとえると、do~while文は「まず一度、試しに型を出す」流れです。
そのあとで「まだ続ける条件を満たしているか」を確認し、続けるならもう一度型を出します。
do~while文の流れ
do~while文の流れは、次のようになります。
| 手順 | 内容 |
|---|---|
| 1 | まずブロック内の処理を実行する |
| 2 | 条件を確認する |
| 3 | 条件が true なら、もう一度ブロック内を実行する |
| 4 | 条件が false なら終了する |
while文と比べると、条件を確認するタイミングが違います。
| 文 | 条件を調べるタイミング |
|---|---|
| while文 | 処理の前 |
| do~while文 | 処理の後 |
while文では、最初に条件を調べます。
そのため、条件が最初から false なら、処理は1回も実行されません。
一方、do~while文では、先に処理を実行します。
そのため、条件が最初から false でも、ブロック内の処理は1回だけ実行されます。
この違いが、do~while文を使い分けるうえでとても重要です。
while文との違い
while文と do~while文 は、どちらも条件によって繰り返しを続ける構文です。
ただし、決定的に違うのは、条件判定の位置です。
while文の考え方
while(条件){
処理
}while文では、処理の前に条件を確認します。
条件が true なら処理を実行します。
条件が false なら、処理を実行せずに終了します。
do~while文の考え方
do{
処理
}while(条件);do~while文では、まず処理を実行します。
そのあとで条件を確認します。
そのため、条件が最初から false でも、最初の1回は実行されます。
| 比較項目 | while文 | do~while文 |
|---|---|---|
| 条件判定の位置 | 先に判定する | 後で判定する |
| 最低実行回数 | 0回のことがある | 必ず1回以上 |
| 向いている場面 | 条件を満たすときだけ始めたい | とりあえず1回は実行したい |
| 考え方 | 条件を見てから実行 | 実行してから条件を見る |
鬼滅の刃風にたとえると、while文は「敵の気配があるなら警戒行動をする」です。
最初から敵の気配がなければ、警戒行動はしません。
do~while文は「まず一度、周囲を確認してから、まだ警戒を続けるか判断する」です。
最初の確認は必ず行われます。
日常のイメージで考える do~while文
do~while文は、日常の行動に置き換えると分かりやすくなります。
たとえば、メニュー表示を考えてみます。
まずメニューを1回表示します。
そのあとで、もう一度選ぶかどうかを確認します。
続けるなら、またメニューを表示します。
終わるなら終了します。
| 流れ | do~while文の考え方 |
|---|---|
| まずメニューを表示する | do ブロックを実行 |
| 続けるか確認する | while の条件を確認 |
| 続けるなら戻る | 条件が true |
| 終了するなら抜ける | 条件が false |
このように、do~while文は「先に1回やることが自然な処理」に向いています。
鬼滅の刃風にたとえると、任務前の指令確認で、まず一度は指令札を開きます。
そのあと「続けて確認する必要があるか」を判断します。
この「まず1回確認する」という流れが、do~while文の感覚です。
図:do~while文は処理を先に実行する
↓クリックすると拡大表示されます。

この図が示していること
この図では、do~while文が処理から始まることを示しています。
まず do ブロックの中に入り、メッセージ表示などの処理を実行します。
そのあとで i++ のような更新処理を行い、最後に i <= 5 のような条件を確認します。
条件が true なら、もう一度 do ブロックに戻ります。
条件が false なら、do~while文を終了します。
ここから分かることは、do~while文では条件判定が後ろにあるため、最初の1回は必ず処理されるということです。
do~while文を確認する
ここでは、do~while文を使って、お知らせメッセージを5回表示するプログラムを見ていきます。
ファイル名:Sample6.java
class Sample6
{
public static void main(String[] args)
{
int i = 1; // 回数を数えるための変数
do{
System.out.println(i + "回目のお知らせです。今日も型の修行を続けましょう。");
i++; // 次の回数に進める
}while(i <= 5);
System.out.println("お知らせの表示が終わりました。");
}
}実行結果
1回目のお知らせです。今日も型の修行を続けましょう。
2回目のお知らせです。今日も型の修行を続けましょう。
3回目のお知らせです。今日も型の修行を続けましょう。
4回目のお知らせです。今日も型の修行を続けましょう。
5回目のお知らせです。今日も型の修行を続けましょう。
お知らせの表示が終わりました。このプログラムでは、最初に i へ 1 を代入しています。
int i = 1;そのあと、do ブロックの中に入ります。
do{
System.out.println(i + "回目のお知らせです。今日も型の修行を続けましょう。");
i++;
}while(i <= 5);do~while文では、条件を確認する前に、まずブロック内の処理を実行します。
つまり、最初に 1回目のお知らせです。今日も型の修行を続けましょう。 が表示されます。
そのあと、i++ によって i が 2 になります。
そして最後に i <= 5 を確認します。
条件が true なら、もう一度 do ブロックに戻ります。
Sample6.javaの動き
Sample6.java の流れを表で追うと、次のようになります。
| i の値 実行前 | ブロック実行 | i++ 後の値 | 条件 i <= 5 | 次の動き |
|---|---|---|---|---|
| 1 | 1回目を表示 | 2 | true | 続ける |
| 2 | 2回目を表示 | 3 | true | 続ける |
| 3 | 3回目を表示 | 4 | true | 続ける |
| 4 | 4回目を表示 | 5 | true | 続ける |
| 5 | 5回目を表示 | 6 | false | 終了 |
この表を見ると、do~while文では、先にブロックを実行してから条件を見ていることが分かります。
i が 5 のとき、5回目のメッセージを表示します。
そのあと i++ によって i は 6 になります。
最後に i <= 5 を確認すると false になります。
そのため、do~while文は終了します。
そして、do~while文の外にある次の文が実行されます。
System.out.println("お知らせの表示が終わりました。");鬼滅の刃風にたとえると、1回目から5回目まで型の知らせを出し、6回目に進む前に「もう条件を満たしていない」と判断して修行を終える流れです。
while文と同じ結果になることもある
do~while文、while文、for文は、同じような結果を作れる場合があります。
たとえば、1から5まで繰り返してメッセージを表示する処理は、for文でもwhile文でもdo~while文でも表現できます。
ただし、構文ごとに「何を自然に表せるか」が違います。
| 構文 | 得意な表現 |
|---|---|
| for文 | 回数が決まっている繰り返し |
| while文 | 条件を先に確認してから続ける繰り返し |
| do~while文 | まず1回実行してから続けるか判断する繰り返し |
大切なのは、「書けるかどうか」だけではありません。
その構文を使うことで、コードの意図が自然に伝わるかどうかです。
do~while文を使うと、「最初の1回は必ず行う」という意図が読み取りやすくなります。
鬼滅の刃風にたとえると、for文は「5回型を出す」、while文は「条件を満たしているなら型を出す」、do~while文は「まず型を出して、そのあと続けるか判断する」という違いです。
do~while文の最大の特徴
do~while文でいちばん重要なのは、最低1回は必ず処理されることです。
この特徴をはっきり見るために、条件が最初から false になる場合を考えます。
int i = 10;
do{
System.out.println("このメッセージは1回表示されます。");
}while(i < 5);この場合、i は 10 です。
条件は次の通りです。
i < 510 < 5 は false です。
しかし、do~while文では、条件を確認する前にブロック内の処理を実行します。
そのため、このメッセージは1回表示されます。
| 構文 | 条件が最初から false のとき |
|---|---|
| while文 | 1回も実行されない |
| do~while文 | 1回は必ず実行される |
この違いはとても大切です。
while文は「条件を満たしているなら実行する」。
do~while文は「まず実行してから、続けるか判断する」。
このように考えると、使い分けやすくなります。
do~while文が向いている場面
do~while文は、最初の1回を必ず行いたい場面に向いています。
| 場面 | do~while文が向いている理由 |
|---|---|
| メニューを最低1回は表示したい | まず表示してから続けるか判定できる |
| 入力を1回受け取ってから判定したい | 先に入力処理を実行できる |
| 処理結果を見てから続行を決めたい | 実行後に条件を調べられる |
| ゲームの選択画面を表示したい | 画面を出してから終了するか確認できる |
| 任務確認を最低1回行いたい | まず確認してから続行判断できる |
たとえば、ゲームのメニュー画面では、最初にメニューを表示しなければ、ユーザーは選択できません。
そのあとで、もう一度表示するか、終了するかを判断します。
このような「まず1回は実行する」流れでは、do~while文が自然です。
鬼滅の刃風にたとえると、任務札を一度も開かずに続けるか判断するのは不自然です。
まず任務札を開き、そのあとで「続けて確認するか」を判断する。
この流れが do~while文 に向いています。
do~while文で気をつけたいこと
do~while文も繰り返し文なので、条件がいつか false になるように書く必要があります。
もし条件に関係する値が変化しなければ、終わらないループになる可能性があります。
たとえば、次のようなコードは注意が必要です。
int i = 1;
do{
System.out.println(i + "回目です。");
}while(i <= 5);このコードでは、i の値が変わっていません。
そのため、i <= 5 はずっと true のままです。
結果として、処理が何度も続いてしまいます。
| 注意点 | 内容 |
|---|---|
| 更新を書き忘れる | 無限ループになる |
| 条件式を間違える | 回数がずれる |
| do と while の形を混同する | 構文ミスにつながる |
| 最後の ; を忘れる | do~while文では ; が必要 |
| ブロックの範囲を見落とす | どこまで繰り返すか分かりにくくなる |
特に注意したいのは、最後のセミコロンです。
do~while文では、最後の while(条件) のあとにセミコロンを書きます。
do{
処理
}while(条件);while文だけを学んだ直後だと、この最後の ; を忘れやすいです。
do~while文では、構文の一部として必要なので、しっかり意識しておくと安心です。
鬼滅の刃風にたとえると、最後の ; は「この繰り返しの型はここで一区切り」という印です。
書き忘れると、構文として正しくまとまりません。
図:while文とdo~while文の違い
↓クリックすると拡大表示されます。

この図が示していること
この図では、while文とdo~while文の違いを比較しています。
左側の while文 は、最初に条件を確認します。
条件が true なら処理を実行し、false なら最初から何も実行せずに終了します。
右側の do~while文 は、まずブロック内の処理を実行します。
そのあとで条件を確認し、true ならもう一度実行します。
条件が false でも、最初の1回はすでに実行されています。
ここから分かることは、while文とdo~while文の大きな違いは、条件判定のタイミングにあるということです。
プログラムの基本構造も見ておこう
Javaのプログラムの流れは、大きく分けると次の3つの基本構造で考えられます。
| 基本構造 | 内容 | 代表的な構文 |
|---|---|---|
| 順次 | 上から順番に処理する | 通常の文の並び |
| 選択 | 条件によって処理を分ける | if文、switch文 |
| 反復 | 条件に応じて繰り返す | for文、while文、do~while文 |
↓クリックすると拡大表示されます。

順次
順次は、処理を上から順番に実行していく流れです。
処理1;
処理2;
処理3;プログラムのもっとも基本になる形です。
選択
選択は、条件によって進む先を変える流れです。
if文やswitch文がこれにあたります。
| 条件 | 進む処理 |
|---|---|
| true | 条件に合う処理 |
| false | 条件に合わない処理 |
鬼滅の刃風にたとえると、任務札の番号や敵の状態を見て、進む道を選ぶ流れです。
反復
反復は、条件に応じて同じ処理を何度も行う流れです。
for文、while文、do~while文がここにあたります。
| 反復構文 | 特徴 |
|---|---|
| for文 | 回数が分かりやすい |
| while文 | 条件を先に確認する |
| do~while文 | まず1回実行してから条件を確認する |
do~while文は、この反復の基本構造の1つです。
単独の構文として覚えるだけでなく、「繰り返し処理の仲間」として位置づけると、Java全体の流れが見えやすくなります。
do~while文を読むときのポイント
do~while文を読むときは、次の順番で確認すると分かりやすいです。
| 見るポイント | 確認すること |
|---|---|
| do ブロック | まず何を実行するか |
| 更新処理 | 条件に関係する値が変わるか |
| while の条件 | 続ける条件は何か |
| 最後のセミコロン | while(条件); の形になっているか |
| 終了タイミング | いつ false になるか |
Sample6.java なら、次のように整理できます。
| 注目点 | 内容 |
|---|---|
| 初期値 | i = 1 |
| まず実行する処理 | お知らせメッセージを表示 |
| 更新 | i++ |
| 条件 | i <= 5 |
| 終了 | i が 6 になったとき |
このように見ると、do~while文の流れがかなり追いやすくなります。
do~while文を学ぶ意味
do~while文は、while文とよく似ています。
そのため、最初は違いが小さく見えるかもしれません。
しかし、最低1回は必ず実行されるという特徴は、実際のプログラムではとても大きな意味があります。
| 使いたい場面 | do~while文が合う理由 |
|---|---|
| まず1回表示したい | 表示してから条件を確認できる |
| まず1回入力を受けたい | 入力後に続けるか判断できる |
| まず処理してから判定したい | 結果を見て継続判断できる |
| メニューを繰り返したい | 最初のメニュー表示を保証できる |
for文、while文、do~while文は、どれも繰り返しを書くための構文です。
ただし、それぞれ得意な場面が少しずつ違います。
| 構文 | 特徴 |
|---|---|
| for文 | 回数を管理しやすい |
| while文 | 条件を先に見て繰り返す |
| do~while文 | まず1回実行してから条件を見る |
do~while文で特に大切なのは、次の3つです。
| 大切なこと | 内容 |
|---|---|
| ブロックを先に実行する | 条件確認より処理が先 |
| そのあとで条件を確認する | 続けるかどうかを後で判断 |
| 最低1回は必ず処理される | 条件が最初から false でも1回は実行 |
鬼滅の刃風にたとえると、do~while文は「まず一度、型を出してから、続けるか判断する反復の型」です。
この感覚を身につけると、メニュー処理、入力確認、ゲームの選択画面など、実用的な繰り返し処理をより自然に書けるようになります。
