Java入門の第10回です。前回からの続きですが、今回だけでも分かる内容になっています。
今回は、配列について解説します。プログラムで何か作成する際、配列を使用することでプログラムコードを簡潔にまとめられることがあります。配列の扱い方を身につけると、プログラミングで出来ることの幅が広がります。
配列とは
配列とは、 配列は複数のデータを代入する入れ物です。ひとつの配列名に対して複数のデータを代入して、ひとまとめにして管理できます。
変数と配列は、データを代入しておく入れ物という点でよく似ています。変数はひとつの値を代入するためのひとつの入れ物ですが、配列は複数の値を代入するための複数の入れ物という点が異なります。
Java言語において配列を使用する手順は以下の通りです。
- 配列の宣言
- 配列数分の入れ物を確保
- 配列に値を代入
- 配列を参照
配列を使用した実例
配列を使用した実例を見てみましょう。以下は、 配列scoresを宣言して、10個分の入れ物を確保して、そこへ10個の値を順番に代入して、その6番目のとなる配列scores[5]に代入されている値を参照して画面表示させるプログラムコードです。
//配列の宣言 int [] scores; //配列の要素数分の入れ物を確保 scores = new int[10]; //配列に値を代入 scores[0] = 72; scores[1] = 68; scores[2] = 87; scores[3] = 78; scores[4] = 62; scores[5] = 55; scores[6] = 48; scores[7] = 63; scores[8] = 70; scores[9] = 95; //配列を参照 → 55と表示される System.out.println(scores[5]);
上記コードの int [] scores; の部分では、int型の配列scaresを宣言しています。また、scores = new int[10]; の部分では、配列に代入する10個分のデータの入れ物を確保しています。
実際に動かしてみる
実際に上記コードをクラスにして、Eclipse上で動かしてみましょう。Eclipseでクラスを新規作成するには、メニューから [ファイル] → [新規] → [クラス] と選択します。
以下は「Test10」という名前のクラスを作って、そのなかに上記コードを記述したものです。
public class Test10 { public static void main(String[] args) { //配列の宣言 int [] scores; //配列の要素数分の入れ物を確保 scores = new int[10]; //配列に値を代入 scores[0] = 72; scores[1] = 68; scores[2] = 87; scores[3] = 78; scores[4] = 62; scores[5] = 55; scores[6] = 48; scores[7] = 63; scores[8] = 70; scores[9] = 95; //配列を参照 → 55と表示される System.out.println(scores[5]); } }
コードが入力できたら、Eclipseメニューの実行ボタンから[実行] → [Javaアプリケーション]を選択します。以下は、Eclipseの実行結果画面です。
上記コードでは、scoresという名前の配列を宣言しています。int型として宣言しるので、配列に代入できるデータは整数となります。scores = new int[10]; の部分では、10個分の入れ物を確保しています。その後、配列番号の0~9番までの各データを代入していきます。
System.out.println(scores[5]); の部分では、配列scoresの6番目となる scores[5] の値を参照して、println()で値を画面に表示するように指定しています。
尚、 scores[5] のなかの数字の5の部分は配列の要素番号で、「 インデックス番号」または「添え字」と呼びます。インデックス番号を指定することで、配列のなかのどのデータかを特定できるようになります。
上記プログラムを実行すると、scores[5] = 55; の部分で代入された値の55が参照されて画面表示されます。その結果、コンソールには55という値が表示されています。
配列を一行でまとめて作成
上記で作成した配列scoresは、以下のように書くこともできます。以下の書き方では、配列の宣言、配列の要素数分の入れ物を確保、配列データの代入までを一行にまとめて記述できます。
//配列を一行でまとめて作成 int [] scores = {72, 68, 87, 78, 62, 55, 48, 63, 70, 95}; //配列を参照 → 55と表示される System.out.println(scores[5]);
配列の要素数を取得する
配列の要素数を取得するには、lengthプロパティを参照します。配列要素が10個の場合には、10と返ります。
//配列を一行でまとめて作成 int [] scores = {72, 68, 87, 78, 62, 55, 48, 63, 70, 95}; //配列の要素の数 int num = scores.length; //配列の要素数を参照 → 10と表示される System.out.println(num);
配列の平均値を算出する
配列を使って平均値を算出してみましょう。配列に代入することで扱いやすくなったデータと、前に紹介したfor文による繰り返し処理を組み合わせることで、平均値の算出プログラムを簡潔にできます。
//配列を一行でまとめて作成 int [] scores = {72, 68, 87, 78, 62, 55, 48, 63, 70, 95}; //配列の要素の数 int num = scores.length; //変数sumの宣言(合計値) int sum = 0 ; //配列の合計値の計算 for(int i = 0; i < num; i++){ sum = sum + scores[i]; } //配列の平均値の計算 int average = sum / num; //配列の平均値を参照 → 平均値69が表示される System.out.println(average);
尚、(72 + 68 + 87 + 78 + 62 + 55 + 48 + 63 + 70 + 95) / 10という計算式で平均値を 算出すると 69.8 となりますが、今回は変数 average のデータ型をint型にしているので、端数が切り捨てられた整数69となっています。
多次元配列
ここまでに登場した配列は一次元配列と呼ばれる比較的シンプルな配列ですが、一次元配列をさらに配列化した多次元配列も扱えます。
以下は、多次元配列の例です。例えば、教科に番号を振るとして、国語の教科番号を0、算数を1とした場合を想定してみましょう。多次元配列scoresでは、国語の点数と算数の点数をまとめて管理できることになります。
//多次元配列の宣言 int [][] scores; //配列の要素数分の入れ物を確保(国語と算数の2教科 × 10人分の点数) scores = new int[2][10]; //配列に値を代入(国語の点数) scores[0][0] = 72; scores[0][1] = 68; scores[0][2] = 87; scores[0][3] = 78; scores[0][4] = 62; scores[0][5] = 55; scores[0][6] = 48; scores[0][7] = 63; scores[0][8] = 70; scores[0][9] = 95; //配列に値を代入(算数の点数) scores[1][0] = 42; scores[1][1] = 56; scores[1][2] = 37; scores[1][3] = 66; scores[1][4] = 75; scores[1][5] = 52; scores[1][6] = 28; scores[1][7] = 85; scores[1][8] = 90; scores[1][9] = 17; //配列を参照 → 90と表示される System.out.println(scores[1][8]);
多次元配列について簡単に紹介しましたが、プログラミング初心者のうちは、そういうものがあるということを知っておく程度でひとまず良いかもしれません。現時点では、一次元配列の扱いに慣れることの方がより大切です。
実際にプログラミングで何か作成しようとすると、多次元配列を使いたくなる場面は割とありますので、その際にあらためて学び直しても良いでしょう。
次回へ続きます。