백엔드/나도코딩 자바

[나도코딩 자바 챕터5] 다차원 배열 순회해서 영화관 좌석을 출력해보자.

응개야 2023. 8. 28. 21:56

소규모 영화관 좌석표를 만든다고 가정을 해보자

A1 - A5   // A열의 1부터 5까지

B1 - B5  // B열의 1부터 5까지

C1 - C5 // C열의 1부터 5까지....

 

 

 

String[] 

문자열을 사용

[]를 넣어 배열로 만들어준다.

예약어 뒤 변수를 넣고

{ }안에 좌석인 "A1" ... 값을 넣어주자.

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

 

 

차원을 하나더 만들 때마다 중괄호를 하나씩 추가한다고 생각하면 된다.

2차원 배열은 []를 한번 더 작성하면 된다.

[] [] 처럼... 중괄호 사이에 여러 값을 넣어주면 된다.

콤마(,)를 넣어서 1차원 값들을 차례대로 배열해주자.

// 3 x 5 크기의 2차원 배열
String[][] seats = new String[][]{
        {"A1", "A2", "A3", "A4", "A5" },
        {"B1", "B2", "B3", "B4", "B5" },
        {"C1", "C2", "C3", "C4", "C5" }

Alt를 누른 상태에서 드래그 해보자.

블록을 선택할 때 간편하게 지정할 수 있다.

 

B2에 접근하려면

인덱스 순서가 0부터 시작하니

1,1 배열로 입력해보자.

seats[1][1] 하면 나온다.

// B2 에 접근하려면?
System.out.println(seats[1][1]);

C5에 접근하려면

인덱스 순서가 0부터 시작하니

2,4 배열로 입력해보자.

seats[2][4] 하면 나온다.

// C5 에 접근하려면?
System.out.println(seats[2][4]);

 

가령 영화관이 직사각형이 아니라 경우에 따라

앞쪽 좌석은 좁고

뒤쪽 좌석은 갯수가 많은 둥글게 지어진 곳이 있다고 치자.

// 첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸,
String[][] seats2 = {
        {"A1", "A2", "A3" },
        {"B1", "B2", "B3", "B4" },
        {"C1", "C2", "C3", "C4", "C5" }
};

A3에 접근하려면 마찬가지로 배열 순서로

0,2에 출력하면 되겠다.

// A3 에 접근하려면?
System.out.println(seats[0][2]);

하지만 A5(있지 않음)에 접근하려면

오류가 뜬다.

// A5 에 접근하려면? 불가임
// System.out.println(seats[0][4]);

3차원 배열은 만들 수 없을까? 있긴 하다 알아만 둘 것

// 3차원 배열 만들기 (세로 x 가로 x 높이) 이런게 있다..만 알아둘 것
// String[][] marray = new String[][][];