2次元配列入門(Java)

Java

2次元配列とは

int型の配列には要素として整数が入っている、
[int型配列]

int[] data={
 2,
 3,
 4,
};

String型の配列には要素として文字列が入っている

[String型の配列]

String[] data={
 "John",
 "Paul",
 "George",
 "Ringo",
};

そして要素として配列が入っているのが2次元配列だ。

[int型の2次元配列]

int[][] data={
 {1,2,3},
 {4,5,6},
};

今回はこの2次元配列についての理解を深めよう。

2次元配列の宣言と初期化

1. 配列の宣言

// 型[][] 配列名 = new 型[行数][列数];
int[][] data = new int[3][2]; 
/*
{
{0,0},
{0,0},
{0,0}
}
*/
  • [3] → 行数(縦方向のサイズ)
  • [2] → 列数(横方向のサイズ)

一般にこのような2次元配列を3行2列の2次元配列と呼ぶ

2. 宣言と同時に初期値を設定する

int[][] data = {
    {1, 2},
    {3, 4},
    {5, 6}
};

要素のアクセスと変更

2次元配列の要素にアクセスするときは、行番号列番号 を指定する。
配列は 0から始まる ので注意!

要素のアクセス

System.out.println(data[0][1]); // 2

要素の変更

data[2][0] = 10;
/*
{
    {1, 2},
    {3, 4},
    {10, 6}
}
*/

配列の走査

for文

public class Main {
    public static void main(String[] args) {
        int[][] arr = {
            {1, 2},
            {3, 4},
            {5, 6}
        };

        // 2重for文
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println(); // 行ごとに改行
        }
    }
}

出力結果

1 2  
3 4
5 6

拡張for文

public class Main {
    public static void main(String[] args) {
        int[][] arr = {
            {1, 2},
            {3, 4},
            {5, 6}
        };

        // 拡張for文
        for (int[] ar : arr) {
            for (int n : ar) {
                System.out.print(n+ " ");
            }
            System.out.println();
        }
    }
}

出力結果

1 2  
3 4
5 6

不規則な2次元配列(ジャグ配列)

列のサイズが揃っていない2次元配列をジャグ配列という。

宣言と初期化

int[][] arr= new int[3][];
arr[0] = new int[]{1, 2};
arr[1] = new int[]{3};
arr[2] = new int[]{4, 5, 6};

for文での走査

走査はジャグでない2次元配列と同じ。

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

出力結果

1 2  
3
4 5 6

まとめ

  • 2次元配列 は行と列で構成されたデータ構造。
  • 宣言時に [行数][列数] を指定。
  • データを格納・取得するには [行番号][列番号] を使用。
  • 不規則な配列(ジャグ配列) にも対応できる。

2次元配列を理解することで、データを整理して効率的に扱えるようになる、ゲームのマップなどにも多用される大事な概念だ。

例題

  1. 3行3列のint型2次元配列を作成し、要素として1~9のランダムな値を格納せよ。
  2. 以下のようなフォーマットで出力せよ
[6, 3, 5]
[8, 7, 6]
[1, 9, 5]

[解答例]

import java.util.Arrays;

public class Main{
	public static void main(String[] args){
		int[][] data = new int[3][3];
		for(int i=0;i<data.length;i++) {
			for(int j=0;j<data[i].length;j++) {
				data[i][j] = new java.util.Random().nextInt(9)+1;
			}
		}
		
		for(int[] row : data) {
			System.out.println(Arrays.toString(row));
		}
	}
}

発展

クラス数、クラスの人数、それぞれの点数をキーボードから入力し、表を出力する処理をint型2次元配列を使って作成せよ。
[実行結果]

クラスの数>>2
1組のクラスの人数>>3
1組1人目の点数>>20
1組2人目の点数>>60
1組3人目の点数>>30
2組のクラスの人数>>4
2組1人目の点数>>90
2組2人目の点数>>70
2組3人目の点数>>30
2組4人目の点数>>45
--表出力--
1組 20 60 30
2組 90 70 30 45

参考

Java
スポンサーリンク
シェアする
mjpurinをフォローする

コメント

タイトルとURLをコピーしました