Java Multi-dimensional Array
참고서적 : Java의정석 3rd Edition
일차원 배열을 활용하여 다차원 배열을 생성할 수 있다.
2차원 배열의 선언과 인덱스
2차원 배열은 주로 테이블 형태의 데이터를 담는데 사용된다.
배열을 생성하면 배열의 각 요소에는 배열요소타입의 기본값이
자동적으로 저장된다.
1
| int[][] score = new int[4][4];
|
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) { 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]; bingo[i][j] = bingo[col][row]; 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"); };
} }
|