5.配列
5-1 「配列とは?」
はじめに
今までは、同じ型の変数を複数個利用する場合、その数の分だけ変数宣言し利用するということをを行ってきました。 そのため、数が増えると管理が難しくなり扱いにくくなってしまいます。しかし、同一型の変数の集まりは、ひとまとめにすることができます。 それが配列です。本章では配列の使用方法について解説をしていきます。
配列
まずは、このプログラムを見てみましょう。
※オレンジは入力した値
解説
このプログラムは今まで通りの配列を用いない書き方で、各学生の点数に対して、 一つずつの変数を割り当てています。このプログラムは5人なので、管理は簡単だと思いますが、 仮に学生の人数が100人になった場合、1000人になった場合、プログラムが長文になり見づらくなり、 変数名の管理はもちろん、ミスタイプをしてしまったら、それを見つけるだけで、大変な作業になってしまいます。
それでは、このプログラムを配列を使ったものにしてみます。
// 点数を読み込んで合計点・平均点を表示(配列版)
import java.util.Scanner;
class PointSumAveArray {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int sum = 0; // 合計
final int ninzu = 5; // 人数
int[] tensu = new int[ninzu]; // 点数
System.out.println(ninzu + "人の点数を入力せよ。");
for (int i = 0; i < ninzu; i++) {
System.out.print((i + 1) + "番の点数:");
tensu[i] = stdIn.nextInt(); // tensu[i]を読み込んで
sum += tensu[i]; // sumにtensu[i]を加える
}
System.out.println("合計は" + sum + "点です。");
System.out.println("平均は" + (double)sum / ninzu + "点です。");
}
}
5人の点数を入力せよ。
1番目の点数:32
2番目の点数:68
3番目の点数:72
4番目の点数:54
5番目の点数:92
合計は318点です。
平均は63.6点です。
※オレンジは入力した値
配列を用いていないプログラムと内容は同じで、実行結果も同じですが、 今回のプログラムのほうが文書も短くなり、見やすくなっています。 変更点を挙げると、前のプログラムは変数名に生徒の名前を用いていましたが、今回のプログラムは生徒の名前は用いていません。 今回のプログラムの解説をする前に、もう一度、配列について復習しておきます。
重要
配列を利用するとき、配列内の個々の変数を識別するには番号を用います。 番号は0から始まる連番を利用します。今回の場合は5つの配列を作ることになるので、 No0、No1、No2、No3、No4という5つの配列を作成してます。
配列の宣言方法
ここからは、配列の利用方法を具体的に解説していきます。配列を利用するときには変数と同じように、 先に宣言する必要があります。その記述方法を以下に示します。
① int[] a; ② int a [];
2種類の記述方法がありますが、どちらを利用しても大丈夫です。この宣言により作られるのは 配列変数と呼ばれる特殊な変数で、配列変数は配列本体ではありません。 配列本体は、ある手続きに基づいて、配列変数とは別に生成する必要があります。 今回の場合だと、5人分の配列本体が必要なので、以下のように配列本体を生成します。
new int[5];
生成した配列本体と配列変数は関連付ける必要があり、その関連付けの方法を以下に示します。
a = new int[5];
このことにより、配列本体が生成されるとともに、変数aがそれを参照することになります。 なお、配列変数の宣言の初期化に、配列本体の生成を埋め込むと、プログラムは簡潔になります。 この方法を以下に示します。
int[] a = new int[5];
こうすることで、生成された配列本体を参照するように変数aが初期化されます。
重要
配列本体はnewによって生成する。配列変数は配列本体を参照する変数である。