1. do-while ループの基本
想像してみてください。ユーザーが思い浮かべた数を当てるプログラムを書いています。少なくとも 一度 は数を尋ね、その後、当たるまで問い合わせを繰り返す必要があります。条件を先にチェックする場合、通常の while はループに全く入らないことがあります。
そこで役立つのが do-while です。while と違って、条件が最初から偽でも、必ずループ本体を一度は実行します。買い物の有無にかかわらずレジでガムをもらえる、そんな感じです。
do-while の構文
とても簡単です。Java にもう一つの「キーワードの組み合わせ」があるだけです。
do
{
// ループ本体: このコードは少なくとも一度実行される
}
while (uslovie);
do-while ループの構文
条件の括弧の後、末尾 の ; に注意してください! 通常の while にはありませんが、ここにはあります—初心者がはまりやすい典型的なポイントです。
do-while ループの手順の説明
- ループ本体に入る(必ず少なくとも1回)。
- 条件を評価する。
- 条件が真なら本体を繰り返す。
- 条件が偽ならループを抜ける。
2. 通常の while との違い
まず、通常の while の基本的な動作を思い出しましょう:
while (uslovie)
{
// ループ本体
}
条件が最初から偽であれば、本体は一度も実行されません!
次は do-while の例です:
do
{
// ループ本体
}
while (uslovie);
条件がすぐに偽でも、ループ本体は少なくとも1回は実行されます!
違いをコードで示します:
// 通常の while
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// 何も出力されない
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// 条件が偽でも、"count2 = 0" と1行出力される!
ときには「奇妙」に思えるかもしれませんが、ユーザー入力やデータ検証ではまさにこの挙動が必要になります。
3. 実用的な do-while の使いどころ
このループがよく使われるのはどんな場面でしょうか。
データのバリデーション
よくあるパターン: ユーザーに正しいデータの入力を求め(例: パスワードは 6 文字以上)、正しくなるまで繰り返します。
String password;
do
{
System.out.print("新しいパスワードを入力してください(6 文字以上): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("パスワードを受け付けました!");
ユーザーがすぐに十分な長さのパスワードを入力したとしても、ループ本体は少なくとも1回は実行されます。
コンソールアプリのメニュー
よくあるパターン: メニューを表示してコマンドを待ち、特定のコマンドでのみ終了する。
String command;
do
{
System.out.println("メニュー:");
System.out.println("1. 挨拶を表示");
System.out.println("2. 終了");
System.out.print("操作を選んでください: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("こんにちは、世界!");
}
else if (!command.equals("2"))
{
System.out.println("不明なコマンドです。");
}
}
while (!command.equals("2"));
System.out.println("さようなら!");
4. 表: while と他のループの比較
| ループの種類 | 条件の評価タイミング | 本体の実行回数 | 適した場面 |
|---|---|---|---|
|
事前 | 0 回以上 | 繰り返し回数が事前に不明なとき |
|
事後 | 1 回以上 | 本体を最低 1 回は実行したいとき |
|
事前 | 0 回以上 | 反復回数が分かっているとき |
GO TO FULL VERSION