繰り返しを作る『while文』

繰り返しを作る『while文』【ゼロから始めるJavaの基礎~その22~】

Javaで繰り返しの処理を実装したい場合、『for文』の他に使える構文として『while文』というものがあります。

早速、構文を見ていきましょう!

【構文】

while (条件式) {

繰り返し行いたい処理;

}

カウンタ変数や、変化式を記述しなければならなかった『for文』と比べるとずいぶんシンプルな作りですよね。

どのような流れで繰り返し処理が行われるのかをまとめると以下のようになります。

1、『while( )』のカッコの中の条件判定が行われる。

2、条件判定の結果が『true』の場合、『{ }』の中に記述された処理が実行される。

3、『while( )』の条件判定に戻る。

条件判定の結果が『false』だった場合は、『{ }』の中の処理は実行されません。

『for文』と比べると流れもシンプルですが、それには理由がありますのでサンプルを見てみましょう。

【サンプル】

int i = 0;

while(i < 10) {
	System.out.println((i + 1) + "回目の繰り返し");
	i++;
}

まず1行目で『int i = 0;』となっているように、変数を宣言していますが、これは『for文』でカウンタ変数を宣言していたのと同様の処理です。
何回目の繰り返しなのかを保管しておくための変数を用意しています

3行目では『while (i < 10)』の部分で条件判定をしています。
この条件判定の結果が『true』の場合は『{ }』の中に記述された処理が実行されます

5行目では1行目で宣言した変数に1を足すインクリメントの処理が記述されています。
『for文』でいうところの変化式と同じ働きを持たせています

構文はシンプルでしたが、サンプルを見ていただくと、『for文』で記述してあったカウンタ変数や、変化式を『while文』文でも記述しているのがお判りいただけたかと思います。

【サンプル】

int i = 0;

while(i < 10) {
	System.out.println((i + 1) + "回目の繰り返し");
}

上記のように、変化式を記述しなかった場合はどうなるでしょうか?

1行目で、変数『i』には0という数値が代入されています。
3行目の判定も『true』となり、4行目の出力の処理が実行されます。
そして、再度3行目の条件判定に戻りますが、変化式が記述されていないので変数『i』の値は0のままです。

そしてこれは何周目の繰り返しになっても変わることはありません

3行目の条件判定→4行目の処理の実行→3行目の条件判定→4行目の処理実行→…

という処理が延々と繰り返されることになります。

このように1度繰り返しの処理に入った後、変化式が記述されていなかったり、条件式の条件が誤っているなどの理由から、繰り返しの処理から抜けられなくなることを『無限ループ』と呼びます。
無限ループに入ってしまうと、プログラムは延々と同じ処理を繰り返しますのでPCにも多大な負荷をかけることになってしまいます。

プログラムによっては、わざと『無限ループ』を作るコードを書くこともありますが、本当に延々と繰り返しが行われるようなループではなく、何かしらのきっかけでループを抜けられるような処理が必ず実装されます。

プログラミングに慣れるまでは『無限ループ』になってしまうようなコードになってしまわないように注意をしましょう。
誤って『無限ループ』になってしまうコードを実行してしまった場合は、落ち着いてコンソール画面に表示されている『終了』ボタン(※赤い四角ボタン)を押しましょう。

プログラムを強制的に終了するので、無限ループを止める方法として使うことが出来ます。