본문 바로가기

Language/Java

1-(4) 2 차원 배열 순회 및 자동 초기화 방법

1. 2차원 배열 순회 (모든 행의 길이가 같은 2 차원 배열)

        String[][] seats = new String[][]{
                {"A1", "A2", "A3", "A4", "A5"},
                {"B1", "B2", "B3", "B4", "B5"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        for (int i = 0; i < 3; i++) { // 세로
            for (int j = 0; j < 5; j++) { // 가로
                System.out.print(seats[i][j] + " ");
            }
            System.out.println();
        }
        
        // 하드코딩 피하고 싶으면 3과 5를 각각 seats.length, seats[i].length로 바꾸면 된다.

2. 2차원 배열 순회 (행 마다 길이가 다른 2차원 배열)

        String[][] seats2 = {
                {"A1", "A2", "A3"},
                {"B1", "B2", "B3", "B4"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        //seats2[2] -> 2차원 배열 안의 3번째 행인 1차원 배열을 가리킴.

        //seat2.length -> 2차원 배열 안에 1차원 배열의 갯수
        for (int i = 0; i < seats2.length; i++) { // 세로
            for (int j = 0; j < seats2[i].length; j++) { // 가로
                System.out.print(seats2[i][j] + " ");
            }
            System.out.println();
        }

3. 배열 자동 초기화 (값이 엄청 많을 때 유용)

// 배열 자동 초기화
// 세로크기 10 x 가로 크기 15에 해당하는 영화관 검색
String[][] seats3 = new String[10][15];
String[] eng = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
for (int i = 0; i < seats3.length; i++) {
// seats3[i].length == 해당 행의 가로 길이 
    for (int j = 0; j < seats3[i].length; j++) {
    // 각 자리에 값 초기화  (j + 1은 괄호 쳐줘야 int 계산임을 인식, 괄호 없으면 String 계산인 줄 안다.)
    // j는 0부터 시작이니까 +1
        seats3[i][j] = eng[i] + (j + 1);
    }
}

// 표 구매
seats3[7][8] = "__"; //H9
seats3[7][9] = "__ "; //H10

//영화관 좌석 번호 확인
for (int i = 0; i < seats3.length; i++) { // 세로
    for (int j = 0; j < seats3[i].length; j++) { // 가로
        System.out.print(seats3[i][j] + " ");
    }
    System.out.println();
}