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を使わなかった分、ソースコードがシンプルになったような気がします。