繰り返し処理 (do - while)

2010 年 4 月 13 日 火曜日  【 カテゴリー: Javaの基本


今回は繰り返し処理の1つである「do - while文」についてみていきます。
「do - while文」は条件がの間だけ与えられた文の実行を繰り返します。
ただし、処理の実行から開始されるので必ず1回は処理がされます。

基本構文

do {
    繰り返し処理
} while(条件)

この条件文は次のような手順で実行されます。 ※wikipedia引用

  1. 処理を実行する。
  2. 条件を評価する。条件が偽ならば、ループを終了する。

do-whileは条件を満たしている間、繰り返し処理を実行します。
doは和訳すると「実行する」という意味があります。「do -while」の順番通り、実行してから条件判定がありますので必ず1回は処理が行われます。
前回みた「while{処理}」は先に条件判定を行う為、前置判定と呼ばれます。
それに対して「do -while」は後に条件判定を行う為、後置判定と呼ばれます。

サンプル

public class sample01 {
    public static void main(String[] args) {
        int count = 1;
        do{
            System.out.print(count);
            count++;
        }while (count < 10);
    }
}
123456789

繰り返し条件は「変数countが10未満」であることです。条件を満たしている間5~6行目の処理を実行します。6行目で変数countの値は1づつ増加し、条件を満たさなくなると繰り返しから抜けます。

public class sample01 {
    public static void main(String[] args) {
        int count = 10;
        do{
            System.out.print(count);
            count++;
        }while (count < 10);
    }
}
10

繰り返し条件は「変数countが10未満」であることです。いきなり初期値に10を代入して条件を満たさないようにしました。先に処理が行われてから条件判定するので5行目が実行されています。このように「do-while」文は必ず1回は処理が実行されます。

break

public class sample01 {
    public static void main(String[] args) {
        int count = 1;
        do{
        	if(count < 10){
	            System.out.print(count);
	            count++;
        	}else{
        		break;
        	}
        }while(true);
    }
}
123456789

whileの条件を満たしている間に強制的に繰り返し処理から抜けるには「break文」を使います。サンプルは条件に 「true」 としました。つまり永遠に条件を満たし続ける無限ループです。繰り返し処理ではif文により変数countが10未満かどうか判定しています。ifの条件式に満たさない場合は9行目でbreak文が処理され繰り返し処理から抜けます。

do-whileでは、このように無限ループにしてbreak文で抜ける処理を結構使います。例えばキーボードから入力値を取得し、入力値が条件を満たした場合のみ次の処理へ移る場合や、ゲームなどである条件を満たしたら終了など何回繰り返せばよいのか不明な場合によく使われます。

continue

public class sample01 {
    public static void main(String[] args) {
        int count = 1;
        do{
            if(count == 5){
                count++;continue;
            }
            System.out.print(count);
            count++;
        }while(count < 10);
    }
}
12346789

break文はそこで繰り返し処理を終了しdo-while文から抜けました。continue文も処理は終了するのですがdo-whileから抜けるのではなく条件判定に移ります。
サンプルでは変数countが5のとき6行目の処理でcontinue文が実行されます。処理自体は終了されて8~9行目は処理されません。しかしdo-while文から抜けるのではなく条件判定に移るので10行目の処理に移ります。結果として8行目が処理されない「5」だけが表示されていません。

ためしに5行目を if(count == 9) にしてみます。
表示結果は次のようになります。

1234678

もしcontinue文で4行目のdoに移っているならば、8行目の処理が行われ「10」の文字が表示されるはずです。
しかし「10」は表示されていません。continue文は10行目に移っていることがわかります。


にほんブログ村 IT技術ブログ Webサイト構築へ
にほんブログ村
【WEBサイト構築・プログラムブログ】
ランキング参加中!よろしければ「クリック」お願いします。
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村
2010 年 4 月 13 日 火曜日  【 カテゴリー: Javaの基本

コメントをどうぞ

※管理者による確認後に表示されます。表示までしばらくお待ちください。