2次元配列
前節まで学習した配列はデータが線のように一列に並んでいるため、1次元配列と呼ばれます。これから縦と横に、つまり表のように並べる配列(2次元配列)を見てみましょう。
この節では、2次元配列を操作する次の方法を学習します。
■ 2次元配列を用意する
2次元配列は次のように宣言して用意します。
2次元配列宣言の書式 |
---|
データ型[][] 配列名 = new データ型[要素数指定][要素数指定]; |
例:
int[][] data = new int[3][4];
○ ファイル
次のようにファイルを作成してください。
ファイル名 | TwoDimensionalAarray1.java |
---|
○ プログラム
次のようにプログラムを入力してください。
TwoDimensionalAarray1.java
- import java.io.*;
- class TwoDimensionalAarray1{
- public static void main(String[] args){
- //配列の宣言をする
- int[][] data = new int[3][4];
- }
- }
○ コンパイルと実行
C:¥work>javac TwoDimensionalAarray1.java
C:¥work>java TwoDimensionalAarray1
C:¥work>
○ 解説
6行目では、2次元配列を宣言しています。縦3×横4の配列が用意されます。4つの要素を持つ配列が3つあるようなイメージです。
■ 2次元配列に値を代入する
次に2次元配列に値を代入する方法を見てみましょう。
2次元配列へデータ代入の書式 |
---|
配列名[インデックス番号][インデックス番号] = 式; |
例:
data[2][3] = 100;
System.out.println(data[2][3]);
○ ファイル
次のようにファイルを作成してください。
ファイル名 | TwoDimensionalAarray2.java |
---|
○ プログラム
次のようにプログラムを入力してください。
TwoDimensionalAarray2.java
- import java.io.*;
- class TwoDimensionalAarray2{
- public static void main(String[] args){
- //配列の宣言をする
- int[][] data = new int[3][4];
- //配列に値を代入する
- data[0][2] = 100;
- data[1][0] = 200;
- data[2][3] = 300;
- //配列の中身を表示する
- System.out.println(data[0][0]);
- System.out.println(data[0][1]);
- System.out.println(data[0][2]);
- System.out.println(data[0][3]);
- System.out.println();
- System.out.println(data[1][0]);
- System.out.println(data[1][1]);
- System.out.println(data[1][2]);
- System.out.println(data[1][3]);
- System.out.println();
- System.out.println(data[2][0]);
- System.out.println(data[2][1]);
- System.out.println(data[2][2]);
- System.out.println(data[2][3]);
- }
- }
○ コンパイルと実行
C:¥work>javac TwoDimensionalAarray2.java
C:¥work>java TwoDimensionalAarray2
0
0
100
0
200
0
0
0
0
0
0
300
C:¥work>
○ 解説
9行目では、0番の配列の2番の要素に「100」を代入しています。10行目では、1番の配列の0番の要素に「200」を代入しています。11行目では、2番の配列の3番の要素に「300」を代入しています。他の要素は配列が用意されたときに設定される初期化の状態のままです。
14~27行目では、2次元配列の全要素を順番に表示しています。9~11行目で代入した要素は、代入した値が格納されていることを確認できます。それ以外の要素は初期値である0が表示されます。
■ 2次元配列を初期化する
次に、2次元配列での初期化の方法を学習しましょう。 次のように2次元配列を初期化できます。
2次元配列初期化の書式 |
---|
データ型[][] 配列名 = { {値1, 値2, …}, {値1, 値2, …} }; |
例:
int[][] ary = { { 10, 20, 30, 40 }, { 100, 200, 300, 400 } };
○ ファイル
次のようにファイルを作成してください。
ファイル名 | TwoDimensionalAarray3.java |
---|
○ プログラム
次のようにプログラムを入力してください。
TwoDimensionalAarray3.java
- import java.io.*;
- class TwoDimensionalAarray3{
- public static void main(String[] args){
- //配列の初期化をする
- int[][] ary = { { 10, 20, 30, 40 }, { 100, 200, 300, 400 } };
- //配列を表示する
- System.out.println(ary[0][0]);
- System.out.println(ary[0][1]);
- System.out.println(ary[0][2]);
- System.out.println(ary[0][3]);
- System.out.println(ary[1][0]);
- System.out.println(ary[1][1]);
- System.out.println(ary[1][2]);
- System.out.println(ary[1][3]);
- }
- }
○ コンパイルと実行
C:¥work>javac TwoDimensionalAarray3.java
C:¥work>java TwoDimensionalAarray3
10
20
30
40
100
200
300
400
C:¥work>
○ 解説
6行目では、2次元配列の宣言と同時に値を格納しています。初期化の場合は配列の要素数を指定する必要はありません。1つの配列に初期化する値を「{}」内で指定し、それをさらにカンマ区切りで複数指定します。
■ 2次元配列の要素数を取得する
次に、2次元配列の要素数を確認してみましょう。配列の要素数は「配列名.length」で確認できます。2次元配列の場合はどのような結果が出るのでしょうか。 プログラムを作って確認してみましょう。
○ ファイル
次のようにファイルを作成してください。
ファイル名 | TwoDimensionalLength.java |
---|
○ プログラム
次のようにプログラムを入力してください。
TwoDimensionalLength.java
- import java.io.*;
- class TwoDimensionalLength{
- public static void main(String[] args){
- //配列の宣言をする
- int[][] data = new int[2][3];
- //配列の要素数を表示する
- System.out.printf("要素数:%d\n", data.length);
- //2次元配列内の一つの配列の要素数を表示する
- System.out.printf("1つの配列の要素数:%d\n", data[0].length);
- }
- }
○ コンパイルと実行
C:¥work>javac TwoDimensionalLength.java
C:¥work>java TwoDimensionalLength
要素数:2
1つの配列の要素数:3
C:¥work>
○ 解説
9行目では、配列の要素数を取得していますが、「data.length」はdata配列全体の要素数を取得できます。そのため、配列数の「2」が取得できます。
配列一つ一つの要素数を調べるには別の方法を使います。 12行目では、「配列名[インデックス番号].length」とすることで指定した配列の要素数を取得することができます。そのため、配列要素数の「3」が取得できます。