전 막에서 만들어 놓은 다중 배열을 사용해서 시작한다.
String[][] seats = new String[][]{
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
2차원 배열 안에 숫자들을 각각 나타내기 위해서는 두 개의 for 문을 중첩해서 사용한다.
for (int i = 0; i < 3; i++) { // 세로열 기준
for (int j = 0; j < 5; j++) {
System.out.print(seats[i][j] + " "); //A1A2
}
System.out.println();
앞의 for 열은 세로를 나타내고 그 아래의 for 열은 가로를 나타낸다.
반복하는 값인 i와 j는 각각 그 열의 크기보다 작은 조건을 부여한다.
이에 대한 결과값은 다음과 같다.
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
다음은 계단식으로 점차 내려가는 2차원 배열이다.
String[][] seats2 = {
{"A1", "A2", "A3"},
{"B1", "B2", "B3", "B4"},
{"C1", "C2", "C3", "C4", "C5"}
};
이와 같은 경우에는 앞선 for 문을 똑같이 사용할 수 없다.
for (int i = 0; i < seats2.length; i++) { // 세로열 기준
for (int j = 0; j < seats2[i].length; j++) { //가로열
System.out.print(seats2[i][j] + " "); //A1A2
}
System.out.println();
만약 배열의 크기가 너무 크거나 혹은 위와 같이 배열이 점차 줄어들거나 늘어나는 경우에는 배열을 읽어 내려가는 과정에서 다른 값을 사용해야 한다. length는 seat2의 배열을 구성하는 중괄호의 수를 세준다.
그러므로 세로열인 3의 값을 for 문의 조건 안에 넣어주게 되는 것이다.
가로 값을 보면 seats2 값 앞에 대괄호를 쳐서 그 값을 첫번째 줄로 바꾼 것이다. 그 뒤에 이어지는 length 값이 그 첫 번째 세로줄에 적용되어 세로열과 마찬가지로 가로열의 괄호 안에 있는 수들의 개수를 세어 값으로 제공한다. 대괄호 안에 i 값이 들어가 있기 때문에 순서대로 모든 수를 반복해서 세어 가다가, j의 반복문이 끝나면서 다시 i++가 된 체로 루프를 이어나간다.
계산한 값은 다음과 같다.
A1 A2 A3
B1 B2 B3 B4
C1 C2 C3 C4 C5
다음으로는 더 큰 2차원 배열을 만들어보자.
세로 크기 10에 가로 크기가 15에 해당하는 영화관의 좌석을 완성해야한다.
우선은 배열을 생성
String[][] seats3 = new String[10][15];
그리고 앞선 배열들처럼 'A1' 과 같은 형태로 만들기 위해서 세로열의 10의 값을 영어로 지정해준다.
String[] eng = {"A","B","C","D","E","F","G","H","I","J"};
그리고 반복문 for 을 이용해서 이 값들을 배열 안에 집어 넣자.
for (int i = 0; i < seats3.length; i++) { //세로
for (int j = 0; j < seats3[i].length; j++) { //가로
seats3[i][j] = eng[i] + (j + 1);
}
}
이렇게 배열을 생성했다. 특이한 구조는 알파벳 값을 i를 통해 읽어오고, 그 i가 사용되는 세로열 배열 값을 그대로 다시 뒤에 붙이는 숫자들에게 이용했다는 점이다. (이때 j의 값을 1부터 시작하기 위해서 +1을 했다.)
만들어진 배열은 앞서 사용했던 배열을 읽어오는 반복문을 사용해서 읽어오자.
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15
I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15
만약 H8, H9 좌석이 팔렸다고 가정했을 때, 결과 값을 쉽게 바꿀 수 있게 된다.
//표 구매
seats3[7][8] = "__";
seats3[7][9] = "___";
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11 G12 G13 G14 G15
H1 H2 H3 H4 H5 H6 H7 H8 __ ___ H11 H12 H13 H14 H15
I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 J11 J12 J13 J14 J15
Java_기초_반환값(Return) (0) | 2024.04.28 |
---|---|
Java_기초_Parameter (0) | 2024.04.28 |
Java_기초_Mathod (0) | 2024.04.28 |
Java_기초_다중배열_Quiz (0) | 2024.04.28 |
Java_기초_05_Ascii(아스키코드) (0) | 2024.04.28 |