while文

広告

主に指定した回数だけ繰り返し目的で利用されるfor文に対して、条件が満たされている間は何度でも繰り返す目的で利用されるのがwhile文です。書式は次の通りです。

while (条件式){
  実行する文1;
  実行する文2;
  ...
}

while文では条件式を評価しtrueだった場合には「{」から「}」のブロック内に記述された文を実行します。条件式は関係演算子及び論理演算子などを使って記述します。そしてブロック内の処理が一通り終わると改めて条件式を評価します。そしてまたtrueだった場合にはブロック内の文の実行し、falseだった場合にはwhile文を終了します。

繰り返しで実行される文が一つだった場合には「{」と「}」を省略して次のように記述することもできます。

while (条件式)
  実行する文;

このようにwhile文はfor文と同じように使用することができます。for文とは異なり初期化式や変化式がありませんので条件式で変数を使用する場合はwhile文よりも前で記述する必要がありますし条件式を変更するにはブロック内で自分で記述する必要があります。

ではwhile文はどのような場合に使用するのかと言えば繰り返し回数が決まっておらず、条件式で評価する値が不規則に変わるようなものです。簡単な例で言えばユーザーからパスワードなどを入力してもらい一致するまで繰り返し入力を行うような場合やテキスト文書などを読み込み、含まれていた文書を1行ずつ処理するような場合などです。ただ、for文と同じような目的でwhile文を使用しても構いません。回数が決まっている時にはfor文で回数が未定の場合はwhile文というのはあくまで目安です。

では簡単な例を使いwhile文がどのように処理されるのかを確認してみます。

int i = 0;

while (i < 2){
  System.out.println("i = " + i);
  i++;
}

この場合は次のような処理の流れとなります。

 1)i = 0;
 2)条件式を評価。iは2よりも小さいので繰り返しを実行
 3)「i = 0」を画面に出力
 4)i++;
 5)条件式を評価。iは2よりも小さいので繰り返しを実行
 6)「i = 1」を画面に出力
 7)i++;
 8)条件式を評価。iは2よりも小さくないので繰り返しを終了

for文と同じくwhile文ではまず最初に条件式が評価されます。もしも条件式がいきなりfalseとなった場合には繰り返し処理は実行されません。条件式がtrueだった場合にはwhile文の「{」から「}」までのブロック内の文を順に実行していきます。

ブロック内の最後の文を実行したら1回目の繰り返しが終了です。そしてwhile文の最初に戻り改めて条件式を評価します。trueなら再度ブロック内の文を実行し、falseだった場合にはwhile文の次の文へ処理が移ります。

基本的にfor文と同じですが条件式を変化させるのはブロック内で記述する必要があることを忘れないようにして下さい。

サンプル

では簡単な例で試しておきます。

JSample6_1.java

class JSample6_1{
  public static void main(String args[]){
    int i = 0;

    while (i < 2){
      System.out.println("i = " + i);
      i++;
    }
  }
}

コンパイル後に実行すると次のように表示されます。

p6-1

( Written by Tatsuo Ikura )