ある条件が成立する間、繰り返すというものです。繰り返すかどうかは毎回繰り返しのはじめの部分で条件判定をします。
while( 終了判定条件 ) { /* 繰り返しの処理の内容 */ }
次の例は1をどんどん2倍して表示し、1000より大きくなったらやめるプログラムです。
/** whileの使い方 */
public class Wloop {
public static void main( String[] args ) {
double x = 1;
while( x < 1000 ) {
System.out.println( x );
x = x * 2;
}
}
}
結果は以下の通り。double なので、.0 がついています。気にしないでください。
1.0 2.0 4.0 8.0 16.0 32.0 64.0 128.0 256.0 512.0
while の振る舞いは単純です。for の真ん中の条件だけが残ったものと考えることもできます。
for の基本形は次のような形だと書きました。
for ( 3つの設定事項 ) { 繰り返しの処理の内容 }
while についてもそっくりです。
while ( 判定条件 ) { 繰り返しの処理の内容 }
従ってブロック内の文が一つだけなら次のように書いても許されます。。
while ( x<0.1 ) x = Math.random();
ただし判定条件が変わるような1文でないと無限に繰り返してしまいます。
上記の Wloop.java を作りなさい。
1をどんどん3倍して表示し、3000より大きくなったらやめるプログラムを作りなさい。(1.と同様に3000より大きい数は表示しない)
乱数を発生させ、0.1より小さい数がでるまで発生した数値を表示するプログラムをつくれ。例によって Math.random() が0~1未満の数値を返す関数である。
/** 0.1 より小さい数がでるまで繰り返す */ public class Wloop3 { public static void main( String[] args ) { double x = 1; while ( x > 0.1 ) { x = Math.random(); System.out.println( x ); } } }
Wloop3.javaは最後に0.1より小さい数を表示して止まる。これを少し変えて最後に0.1より小さい数を表示しないで終了するようにしたプログラムを作りなさい。