前回インスタンス名を配列にしたことで、同じ名前で扱えるようになりました。同じ名前の配列はインデックスで区別できます。「for文」を使うとインデックスの値を自動的に変化させられるので、プログラムをシンプルに書くことができます。
【1】sample04 フォルダをフォルダごとコピーして、sample05 フォルダを作ります。
【2】sample05 の PersonTest.java を以下のように修正します。
保存先 C:\java\sample05
ファイル名 PersonTest.java
class Person {
String name;
int age;
String address;
Person(String _name, int _age, String _address) {
name = _name;
age = _age;
address = _address;
}
void say(){
System.out.println("私の名前は" + name + "です。年齢は"
+ age + "才で、住所は" + address + "です。");
}
}
class PersonTest {
public static void main(String[] args) {
Person[] people = new Person[2];
people[0] = new Person("太郎", 21, "東京都港区");
people[1] = new Person("花子", 18, "北海道札幌市");
for(int i = 0; i < people.length; i++){
people[i].say();
}
}
}
【3】以下の図を参考に、カレントディレクトリの切り替え、コンパイル、プログラムの実行、結果の確認を行います。そろそろ操作に慣れてきたと思うので、細かい手順は省略します。
【解説】
プログラムは原則として上から下に流れますが、for文を使うと流れを変えて、処理を繰り返すことができます。
(1)for文の構造は以下のようになります。
for(初期化; 条件式; カウンタの増減){
繰り返す内容;
}
(2)実際の使用例をみてみましょう。
for(int i = 0; i < people.length; i++){
people[i].say();
}
・初期化は初めに1回だけ実行されます。i はカウンタと呼ばれ初期値として 0 が代入されています。
・条件式に i が使われ、条件式が成り立つ間処理が繰り返されます。
・処理が1回終了するごとにカウンタの増減が行われます。i++、i--など。カウンタの増減は自由に設定できます。例えばカウンタの初期値を100にしておいて減らしていったり、または2ずつ増減することもできます。
(3)people.length は配列の要素数です。この例では要素数は 2 ですから、i < 2 と同じ意味になります。
(4)カウンタを配列のインデックスにすることで、i が 0,1.2.3. と変化します。すると呼び出すインスタンスが自動的に変わる仕組みです。
people[i].say();
今回の例では繰り返しが2回だけなので効果を実感しにくいですが、配列が100になった時をイメージすると繰り返しがいかに便利かわかると思います。
同じコードを100回も書いていたら大変だし、ちょっとした修正でも手間がかかりますよね。for文を使うと修正箇所は1箇所になります。