do..while文を使った繰り返し処理

広告

Java で繰り返し処理を行う時に利用できる do..while 文の使い方について解説します。 do..while 文は while 文とほぼ同じですが、条件式の評価が繰り返しの最後で行われるため、少なくとも一回は繰り返し処理が行われるのが大きな特徴です。

do..while文の使い方

do..while 文は指定した条件式が真となる間は回数を決めずに処理を繰り返す時に使われます。書式は次のとおりです。

do{
  // 繰り返しの中で実行される処理
  ...
}while (条件式);

do..while 文では最後にセミコロン(;)を記述する必要がある点に注意してください。

繰り返し処理は、まず一回目の繰り返し処理として { から } のブロック内に記述された処理を上から順番に実行したあと、条件式を評価して true だった場合には再度繰り返し処理を行います。 false だった場合には繰り返し処理を終了し do..while 文の次へ処理を映します。

do..while 文の場合、 for 文や while 文と異なり必ず一回は繰り返し処理が行われます。

for 文とは異なり初期化式や変化式はありません。必要な変数は do..while 文の前で宣言などを行い、またブロックの中で条件式が変化するような処理を行ってください。繰り返し処理が終わることができず無限ループとなります。

次のサンプルをみてください。

int num = 5;

do{
  System.out.println("num = " + num);
  num -= 2;
}while (num > 0);

この場合、次のように処理が実行されています。

 1)繰り返しの前段階で変数 num の宣言および初期値の代入を行います

 2)ブロック内の処理を実行(画面に変数 num の値を出力)
 3)ブロック内の処理を実行(変数 num の値を -2 して 3)
 4)繰り返しの1回目終了
 5)条件式を評価 num > 0 は true なので繰り返しを実行

 6)ブロック内の処理を実行(画面に変数 num の値を出力)
 7)ブロック内の処理を実行(変数 num の値を -2 して 1)
 8)繰り返しの2回目終了
 9)条件式を評価 num > 0 は true なので繰り返しを実行

10)ブロック内の処理を実行(画面に変数 num の値を出力)
11)ブロック内の処理を実行(変数 num の値を -2 して -1)
12)繰り返しの3回目終了
13)条件式を評価 num > 0 は false なので繰り返しを終了

結果的に繰り返し処理は 3 回実行され、それぞれ num=5 と num=3 と num=1 を画面に出力します。

なお do..while 文の繰り返し処理で実行する処理が 1 つだけの場合は { と } を省略して次のように記述することもできます。

do
  // 繰り返しの中で実行される処理
while (条件式);

この場合は do 文の次の 1 行だけを繰り返し実行します。(ただ分かりにくいのでブロックは記述することをお勧めします)。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample7-1.java という名前で保存します。

import java.util.Random;

class JSample7_1{
  public static void main(String[] args){
    int num;
    Random rand = new Random();

    System.out.println("6が出たら終わりです");

    do{
      num = rand.nextInt(6) + 1;
      System.out.println("no = " + num);
    }while (num != 6);
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample7_1.java

その後で、次のように実行してください。

java JSample7_1

do..while文の使い方(1)

do..while 文の中で乱数を使って 1 から 6 までの数値を取得し、もし 6 が出たら繰り返し処理を終了しました。

do..while文で無限ループを行う

do..while 文で無限ループを行いたい場合には、条件式に boolean 型の true を記述してください。この場合は繰り返し処理のブロックの中で、何らかの条件を満たしたときに break 文などを使って繰り返し処理を抜ける必要があります。次のサンプルを見てください。

int num = 5;

do{
  System.out.println("num = " + num);
  num -= 2;

  if (num < 0){
    break;
  }
}while (true);

繰り返し処理の中で変数 num の値から -2 を行っていきますが、ある数値よりも小さくなったら break 文を使って do..while 文を抜けて次の処理へ移っています。( break 文を実行すると現在の繰り返し処理を強制的に終了します。詳しくは「break文の使い方」を参照してください)。

なお do..while 文では条件式を省略することはできません。省略した場合はコンパイルエラーとなります。

-- --

Java で繰り返し処理を行う時に利用できる do..while 文の使い方について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。