Java入門8 while文による繰り返し処理

Java入門の第8回です。前回からの続きですが、今回だけでも分かる内容になっています。

今回は、while文による繰り返し処理について解説します。

繰り返し処理で使用される構文

繰り返し処理(ループ処理)とは、何らかの処理を繰り返し行うことです。Java言語で繰り返し処理を行うには、以下の構文などを使用します。

  1. for文
  2. while文
  3. do ~ while文

今回は、このうちのwhile文について解説します。

while文で繰り返し処理

while文は、繰り返し処理を行う際に使用します。 while文の構文は、以下の通りです。

while(条件) {
    繰り返し処理の内容;
}

英単語のwhileは「~する間」という意味ですが、java言語におけるwhile文も「条件がtrueの間は繰り返し処理を実行しなさい」という指定になります。

条件とは、繰り返し処理を継続する条件です。例えば、iが10になるまでループを継続する場合、条件に i<=10 と指定するとiが10以下ならループを継続するように指定したことになります。

サンプルコードで動作確認

while文を使ったサンプルコードを作成して、実際に動作確認してみましょう。

int i=1;
while(i<=10) {
    System.out.println(i + "回目の処理です");
    i++;
}

以下は「Test8」という名前のクラスを作って、そのなかにwhile文の実例を記述したものです。

public class Test8 {

	public static void main(String[] args) {
		int i=1;
		while(i<=10) {
		    System.out.println(i + "回目の処理です");
		    i++;
		}
	}

}

コードが入力できたら、Eclipseメニューの実行ボタンから[実行] → [Javaアプリケーション]を選択します。以下は、Eclipseの実行結果画面です。

whileループに入る前にint i=1と初期化しています。ループ1回目には変数iの値は1なので i<=10の条件評価はtrueとなり、System.out.println(i + “回目の処理です”); が実行されて「1回目の処理です」と表示されます。次に i++ が実行されて変数iの値は2となります。

1回目のループ処理の実行が終わった時点では変数iの値は2となっています。 i<=10 の条件評価は true なので、2回目のループ処理が実行されます。3回目以降のループも同様に繰り返します。

10回目のループ処理が実行された時点で変数iは11となっています。 ループ11回目には変数iの値は11なので i<=10の条件評価はfalseとなり、whileループから抜けることになります。つまり、11回目の条件評価でfalseとなるため、11回目の処理は実行されずにループを抜けます。

while文による繰り返し処理の特徴

冒頭で、Java言語の繰り返し処理には、以下の構文などがあることを紹介しました。

  1. for文
  2. while文
  3. do ~ while文

上記の構文のうち、while文は構文がスッキリしているのが特徴です。

while(条件) {
    繰り返し処理の内容;
}

前回登場したfor文の構文と比較してみましょう。

for (初期化; 条件; 後処理) {
    繰り返し処理の内容;
}

for文の場合には、初期化; 条件; 後処理を先頭行にまとめて記述するので、ループの条件を一か所でまとめて確認できます。

while文は構文がスッキリしていますが、その代わりにループに入る前にプログラム中のどこかで初期化を指定したり、whileループ内のどこかで条件を変化させてやる必要があります。

while文ではカウントアップなどの条件を変化させる処理を書き忘れて無限ループになるミスが起きやすいかもしれません。

while文とfor文で同じ処理を実行してみる

while文とfor文で同じ処理を実行してみましょう。以下のコードは、1 + 2 + 3 + 4 + 5 +…という具合に1から順番に足しこんでいって、100を超えたらループを抜ける処理です。

まずは、while文を使ってコードを書いてみます。

int sum=0;
int i=1;
while(sum < 100) {
    sum = sum + i;
    System.out.println(i + "回目:" + sum);
    i++;
}

以下は、while文を使ったコードを実行した結果画面です。

同じ処理をfor文を使って書くと、以下のようなコードになります。

int sum=0;
for (int i=1; sum<100; i++) {
    sum = sum + i;
    System.out.println(i + "回目:" + sum);
}

以下は、for文を使ったコードを実行した結果画面です。

while文とfor文で構文は異なりますが、どちらも実行結果は同じです。同じ実行結果となるなら、どちらの構文を使うかは好みの問題でしょう。

次回へ続きます。