*다차원 배열 Multidimensional Array


> 다차원 배열이란? 배열들이 뭉쳐서 하나의 면이 되는 배열. 주로 2차원 배열까지 많이 쓰고 간혹 가다 3차원 까진 사용됨.
👉🏻각 배열마다 들어가는 값의 개수가 똑같아야 하는 건 아님. 지난번 배웠던 배열은 1차원 배열.
★2차원 배열 선언하는 방법
자료형[][] 배열이름 = new 자료형[][] {
{배열1}, 𖤐배열이 하나가 아니라 여러 개라면 콤마, 꼭 찍어줘야 함
{배열2}
}
★3차원 배열 선언하는 방법 (세로 x 가로 x 높이) 𖤐선언만 하고자 한다면? 자료형[][][] 배열이름 = new 자료형 [세로][가로][높이];
자료형[][][] 배열이름 = new 자료형[][][] {
{ {}, {}, {} },
{ {}, {}, {} },
{ {}, {}, {} }
}
★특정 인덱스에 접근하는 방법
배열이름[배열 줄 값(0부터 시작)][인덱스 값(0부터 시작)]
𖤐배열 안에 없는 인덱스 값에 접근하려고 하면 ArrayIndexOutOfBoundsException 오류 생김
ex) B2에 접근하려면?
System.out.println(seats[1][1]);
C5에 접근하려면?
System.out.println(seats[2][4]);
(예시 1) A열부터 C열까지 5 좌석씩 있는 소규모 영화관 좌석
👉🏻1차원 배열
String[] seatA = {“A1”, “A2”, “A3”, “A4”, “A5”};
String[] seatB = {“B1”, “B2”, “B3”, “B4”, “B5”};
String[] seatC = {“C1”, “C2”, “C3”, “C4”, “C5”};
👉🏻3X5 크기의 2차원 배열
String[][] seats = new String[][] {
{“A1”, “A2”, “A3”, “A4”, “A5”}, -> 세로줄 [0]
{“B1”, “B2”, “B3”, “B4”, “B5”}, -> [1]
{“C1”, “C2”, “C3”, “C4”, “C5”} -> [2]
}
->인덱스값 [0], [1], [2], [3], [4]
👉🏻첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸인 배열
String[][] seats = new String[][] {
{“A1”, “A2”, “A3”},
{“B1”, “B2”, “B3”, “B4”},
{“C1”, “C2”, “C3”, “C4”, “C5”}
}
*다차원 배열 순회 Multidimentional Array Loop



> 다차원 배열 순회란? 다차원 배열에서 반복문을 통해 각각의 요소에 접근할 수 있음 👉🏻for문을 2번 사용하면 됨
for (int i = 0; i < 배열들의 세로 개수; i++) { // 세로 기준
for (int j = 0; j < 각 배열 인덱스 개수; j++) { // 가로 기준
System.out.print(배열이름[i][j] + “수행할 명령어“); // 배열이름의 i와 j에 해당하는 값들을 하나씩 출력
}
}
(예시 1)
-2차원 배열
String[][] seats = new String[][] {
{“A1”, “A2”, “A3”, “A4”, “A5”}, -> 세로줄 [0]
{“B1”, “B2”, “B3”, “B4”, “B5”}, -> [1]
{“C1”, “C2”, “C3”, “C4”, “C5”} -> [2]
}
-2차원 배열 순회
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(seats[i][j] + “ “);
}
System.out.println();
}
-각 배열의 인덱스 개수가 다를 경우
👉🏻이런 경우엔 위와 같은 공식으로 코드를 입력하게 되면 A3 까지는 잘 출력이 되지만 index3 값에 해당하는 A4가없어서 에러 발생
String[][] seats2 = new String[][] {
{“A1”, ”A2”, ”A3”},
{“B1”, “B2”, “B3”, “B4”},
{“C1”, “C2”, “C3”, “C4”, “C5”}
}
for (int i = 0; i < seats2.length; i++) {
for (int j = 0; j < seats2[i].length; j++) { // [세로줄 값(i)].length 로 각 세로줄마다 다른 인덱스 값을 가지고 있어도 출력 가능
System.out.print(seats2[i][j] + “ “);
}
System.out.println();
}
> 다차원 배열을 반복문을 이용해 값을 초기화하는 방법 (세로 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++) { // 세로
for (int j = 0; j < seats3[i].length; j++) { // 가로
seats3[i][j] = eng[i] + (j +1);
}
}
!!! 어떤 사람이 H9, H10을 예매했다면?
seats3[7][8] = “—“;
seats3[7][9] = “—-“;
!!! 잔여 좌석 확인
for (int i = 0; i < seats3.length; i++) { // i가 seats3배열의 세로줄 값 보다 작다는 조건이 참인 동안 반복
for (int j = 0; j < seats3[i].length; j++) {
System.out.print(seats[i][j] + “ “);
}
Sytem.out.println();
}
*아스키코드 ASCII CODE



> 아스키코드란? ANSI(미국 표준 협회)에서 제시한 정보 교환을 위한 미국 표준 코드
👉🏻알파벳 대문자(A)는 65부터 시작, 소문자(a)는 97부터 시작, 숫자(0)는 48부터 시작
(예시) 아스키코드 확인
char c = ‘0’;
System.out.println(c); // 0
System.out.println((int) c); // 아스키 코드 10진수 48
𖤐아스키코드 활용 배열 순회 (영화관 좌석 배열)
String[][] seats = new String[10][15[;
char ch = ‘A’;
for (int i = 0; i < seats.length; i++) {
for (int j = 0; j < seats[i].length; j++) {
seats[i][j] = String.valueOf(ch) + (j + 1);
}
ch++;
}
for (int i = 0; i < seats.length; i++) {
for (int j = 0; j < seats[i].length; j++) {
System.out.print(seats[i][j] + “ “);
}
System.out.println();
}
*퀴즈#5


'Study > Back' 카테고리의 다른 글
Aug.01.Tue.2023 나도코딩 Java 메소드 오버로딩 Method Overloading ~ 메인 메소드 Main Method (3) | 2023.08.01 |
---|---|
Jul.31.Mon.2023 나도코딩 Java 메소드Method ~ 전달값과 반환값 (1) | 2023.07.31 |
Jul.28.Fri.2023 나도코딩 Java 배열 ~ 배열 순회 (4) | 2023.07.28 |
Jul.27.Thu.2023 나도코딩 Java While ~ 퀴즈#4 (1) | 2023.07.27 |
Jul.26.Wed.2023 나도코딩 Java Else문 ~ For문 (0) | 2023.07.26 |