配列と繰り返し処理の組み合わせ

9.7 配列と繰り返し処理の組み合わせ

 配列を繰り返し処理、特にfor文と組み合わせると、配列の特性を生かした効率の良いプログラムを作成することができます。さらに、ループ文を使うことによって、配列の真価が発揮さるともいえます。
 配列のインデックスには、変数を使うことができるので、繰り返し文で扱うカウンタ変数も配列のインデックスとして利用できます。
 下記は、配列と繰り返し文を組み合わせ、配列変数arrayの全ての要素を表示させるプログラムの一部です。カウンタ変数を0で初期化し「iが配列の長さより小さい」という条件式を設定することで、カウンタ変数iは配列変数arrayの全ての要素のインデックスとして使うことができます。一番最初の要素のインデックスは0で、一番最後の要素のインデックスは配列の長さ-1であるからです。

 まだイメージがつかめないと思いますので、次のプログラムで実際に配列と繰り返し文を連携させたプログラムを作成してみましょう。

9.7.1 for文で配列の値の代入と出力を行うプログラム

 for文を用いて配列の値の代入と値の出力を行うプログラムを作成し、実行結果を確認します。

① ソース・フォルダー      :myproj_intro/src
② パッケージ          :jp.co.f1.intro.ch9
③ 名前             :ForLoopWithArray
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ ForLoopWithArray.java

package jp.co.f1.intro.ch9;

public class ForLoopWithArray {

	public static void main(String[] args) {

		// 配列変数の宣言と要素の作成
		int[] intArray = new int[3];

		for(int i = 0; i < intArray.length; i++){
			intArray[i] = 100;
			System.out.println("intArray["+i+"]の値:" + intArray[i]);
		}

	}

}

実行結果

解説

 8行目でint型の配列変数intArrayを宣言し、3つの要素の記憶領域を確保します。これらの要素は、int型の規定値0で初期化されます。
   8: int[] intArray = new int[3];

 10~13行目までがfor文です。このfor文を使って、intArrayの全ての要素に100を代入しています。配列とfor文を組み合わせる上でポイントとなるのが、配列のインデックスに変数を使えるという点です。
 まず、10行目の条件式に注目してください。配列変数intArrayの要素数は3なので、intArray.lengthは3となります。つまり、この条件式は「i < 3」となり、配列変数intArrayが持つ全ての要素であるインデックス0~2を指定しているのです。
 次に、11~12行目はfor文の内部処理になります。
 1回目のループについて説明します。11行目ではカウンタ変数iのインデックスの要素に100を代入し、代入後の値を表示しています。ループ1回目のカウンタ変数iの値は0であるので、intArray[0]に100を代入するということになります。このイメージは図 9.7.1になります。
 12行目は、11行目で代入した要素の値を表示させます。ループ1回目の時の繰り返し処理のカウンタ変数の値は0なので、「intArray[0]の値 : 100」と表示されます。
 これを「i < intArray.length」の条件が満たされなくなるまで、つまり要素の数だけ繰り返します。
   10: for(int i = 0; i < intArray.length; i++){
   11:    intArray[i] = 100;
   12:    System.out.println("intArray["+i+"]の値:" + intArray[i]);
   13: }

図 9.7.1 : カウンタ変数が0の時、インデックス0の要素へ代入


 このfor文の処理の流れは、以下の表を参考にして下さい。カウンタ変数が要素のインデックスに対応していることに注目して下さい。



NEXT>> 9.8 多次元配列