Java Multi-dimensional Array

Java Multi-dimensional Array

java

참고서적 : Java의정석 3rd Edition

일차원 배열을 활용하여 다차원 배열을 생성할 수 있다.

2차원 배열의 선언과 인덱스

2차원 배열은 주로 테이블 형태의 데이터를 담는데 사용된다.
배열을 생성하면 배열의 각 요소에는 배열요소타입의 기본값이 자동적으로 저장된다.

1
int[][] score = new int[4][4]; // 4 x 4 => 2차원 배열 생성

2차원 배열의 초기화

1차원 배열과 비슷하지만 {} 를 한번더 묶어줘야한다.

1
2
3
4
5
int[][] score = {
{1,2,3},
{4,5,6},
{7,8,9,}
};

2차원 배열은 여러개의 1차원 배열을 묶어서 또 하나의 배열을 만든 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ArrayEx18 {
public static void main(String[] args) {
int[][] score = {{10,20,30}, {40,50,60}, {70,80,90}};

int sum = 0;

for(int[] temp : score) { // score배열 1줄씩 temp[]에 저장한다.
for(int i : temp) {
sum+=i;
}
}
System.out.println(sum);
}

}

score가 2차원 배열이기 때문에 for문에서 먼저 1차원 배열을 저장해줄 temp[]가 필요하다.

가변배열

2차원 이상의 배열을 생성할때 처음 차원을 제외하고 뒤에 차원은 각 행마다 다른 길이의 배열을 생성하는 것이 가능하다.

다차원 배열 활용

다차원 배열을 통해 아래의 문제를 접근해본다.

빙고

5 x 5 크기의 빙고판에 1~25의 숫자를 차례로 저장한 다음에 Math.Random()을 이용해서 저장된 값의 위치를 섞는다. 사용자로부터 숫자를 입력받아서 일치하는 숫자가 있으면 해당 숫자를 0으로 바꾼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Scanner;

public class MultiArrEx2 {
public static void main(String[] args) {

int col = 0;
int row = 0;
int input = 0;
int[][] bingo = new int[5][5];

// 빙고판 초기화.
for (int i = 0; i < bingo.length; i++) {
for (int j = 0; j < bingo[i].length; j++) {
bingo[i][j] = i * 5 + j + 1;
}
}

// 임의로 섞기
for (int i = 0; i < bingo.length; i++) {
for(int j = 0; j < bingo[i].length; j++) {
col = (int)(Math.random()*5);
row = (int)(Math.random()*5);

int temp = bingo[i][j]; // temp에 원래 값을 넣는다.
bingo[i][j] = bingo[col][row]; // i,j 번째의 섞은 값을 넣는다.
bingo[col][row] = temp; // 섞은 값에 원래값을 넣는다.
}
}

Scanner scan = new Scanner(System.in);

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

System.out.print("원하는 값을 입력하시오!!!(종료 : 0) =>");

input = scan.nextInt();

find:
for (int i = 0; i < bingo.length; i++) {
for (int j = 0; j < bingo[i].length; j++) {
if(input == bingo[i][j]) {
bingo[i][j] = 0;
break find;
}

}

}

} while(input != 0); {
System.out.println("Exit Game");
};


}
}


Share