do while文は、for文、while文に続く 3つめの繰り返し(ループ)を実現するための構文です。構造は以下の通りで、予約語do
とwhile
を使用します。条件の部分には boolean型となる式を記述します。条件が trueの間、繰り返しが行われます。
do { // 繰り返したい処理 } while(条件);
なお、for文と while文が前判定だったことに対して、do while文は後判定です。したがって、「繰り返したい処理」は最低でも 1回は実行される点が、大きく異なります。
以前 F202プロジェクトで製作した「6の目が出るまでサイコロを振り続ける」プログラムを、改めて考えて見ます。
この仕様を do while文を使って実現したプログラムは以下の通り。
F301/F301.java
/** * 6の目が出るまでサイコロを振り続けます(do while版)。 */ public class F301 { /** * メインメソッド。 * @param args 引数 */ public static void main(String[] args) { int sai; System.out.println("6の目が出るまでサイコロを振り続けます。"); do { // 1~6のランダム値を saiに代入する sai = 1 + (int)(Math.random() * 6.0); System.out.println("サイコロの目は " + sai + "でした。"); } while(sai != 6); System.out.println("プログラムを終了します。"); } }
実行結果の例は以下の通り。
6の目が出るまでサイコロを振り続けます。 サイコロの目は 3でした。 サイコロの目は 4でした。 サイコロの目は 6でした。 プログラムを終了します。
無限ループを使ったものと比べると、breakを使わなかった分、ソースコードがシンプルになったような気がします。