나의 IT일지
다차원 배열 본문
배열은 같은 타입을 가진 저장공간들을 하나로 묶어놓은 형식으로, 같은타입의 비슷한 내용을 가진 변수들을 편하게 관리하기 위해서 사용한다. 배열은 index값으로 공간을 구분이 하기에, 반복문을 사용하기 용이하다.
2차원 배열
다차원 배열이란 배열을 요소로 가진 배열로, 비슷한 데이터 값들을 구별해서 저장할 때 주로 사용된다. 종류로는 평면적(행,열)으로 저장하는 2차원 배열과 입체적(행,열,면)으로 저장하는 3차원 배열이 있다.
2차원 배열은 배열의 각 요소가 1차원 배열인 배열로, 수학의 행렬처럼 행과 열로 구성되어 있다. 그래서 배열을 호출할 때 가로 인덱스와 세로 인덱스를 사용해야 한다.
배열 선언 | 배열 객체 선언 |
1. 데이터 타입[ ][ ] 배열명; 2. 데이터 타입 배열명 [ ] [ ]; |
배열명 = new 데이터 타입 [요소 행개수][요소 열개수]; |
배열을 사용하기 위해서는 어떤 타입의 배열을 만들지 선언을 한 뒤, 선언한 배열에 공간을 생성한다는 선언을 해야한다. 그래서 배열 선언 부분과 배열 객체 선언 부분이 나눠져 있는 것이다. 이러한 부분도 한번에 사용할 수 있는데, 구조는 다음과 같다.
자료형 배열명 [ ] [ ] = new 데이터 타입 [행 요소 개수][열 요소 개수];
위의 구조는 배열선언부분과 배열 객체선언 부분을 합친 구조로, 해당 타입의 저장공간을 요소개수만큼 만든 뒤(객체 선언), 배열명으로 묶는다(배열 선언)는 뜻을 가지고 있으며, 해당 요소에는 기본값이 초기값으로 저장되어 있다.
2차원 배열은 요소를 2개 가지는데, 1차원 배열인 행 요소와 1차원 배열의 요소인 열 요소로 구성되어 있다. int a[ j ][ i ]를 통해 2차원의 변수를 확인해 보자.
1열 | 2열 | 3열 | ... | i열 | |
1행 | a[0][0] = a[0] | a[0][1] = a[1] | a[0][2] = a[2] | a[0][i-1] = a[i-1] | |
2행 | a[1][0] = a[i] | a[1][1] = a[i+1] | a[1][2] = a[i+2] | a[1][i-1] = a[2i-1] | |
3행 | a[2][0] = a[2i] | a[2][1] = a[2i+1] | a[2][2] = a[2i+2] | a[2][i-1] = a[3i-1] | |
... | |||||
j행 | a[j-1][0] = a[(j-1)i] | a[j-1][1] = a[(j-1)i+1] | a[j-1][2] = a[(j-1)i+2] | a[j-1][i-1] = a[(j*i-1] |
2차원 배열은 2차원 배열의 요소인 1차원 배열에는 가로인덱스가 1차원 배열의 요소에는 세로인덱스가 부여된다. 그래서 각 요소들은 "배열명[가로인덱스][세로인덱스]"로 표현되며, 배열 내의 저장공간을 다룰 때에는 인덱스를 사용해서 표현한다. 이때, 가로 인덱스와 세로 인덱스가 "i-1","j-1"인것을 볼 수 있다. 이는 각 인덱스가 "0"부터 시작해서 나타나는 현상이다.
2차원 배열도 선언하자마자 각 요소에 값을 저장할 수 있다. 이를 초기화라고 하는데, 초기화란 선언한 후 바로 값을 대입하는 것으로, 여러개를 선언할 때에는 쉼표를 통해 배열의 초기값을 구분한다.
자료형 배열명 [ ][ ] = {{값1,값2,값3 ... },{값4,값5,값6...},{값7,값8,값9...}...}
위의 구조는 2차원 배열의 초기화 구조로, 배열을 선언하고 값을 부여하는 형식이다. 1차원 배열과 달리 초기화 할때, 객체선언을 사용하지 않으며, 배열이 선언되어 있으면, 객체를 선언과 같이 값을 추가 시킬 수 없다.
package pack0330;
import java.util.Scanner;
public class Code1 {
public static void main(String[] args) {
//5개의 변수를 묶는 1차원 배열 2개를 묶는 2차원 배열 arrays를 생성
Scanner sc = new Scanner(System.in);
int score[][] = new int[4][3];
String sub[] = {"국어","수학","영어"};
for(int j=0;j<4;j++) {
System.out.println((j+1)+"번학생 점수");
for(int i=0;i<3;i++) {
System.out.print(sub[i]+"점수 :");
score[j][i] = sc.nextInt();
}
}
for(int i=0;i<3;i++) {
System.out.print("\t"+sub[i]);
}
System.out.println();
for(int j=0;j<4;j++) {
System.out.print((j+1)+"번 학생\t");
for(int i=0;i<3;i++) {
System.out.print(score[j][i]+"\t");
}
System.out.println();
}
}
}
위의 코드를 보면 2차원 배열을 중복 반복문으로 호출하는 것을 확인할 수 있다. 이는 배열은 가로인덱스값으로 1차원 배열을 결정하고 해당 1차원 배열의 요소를 세로인덱스값으로 호출 할 수 있기에 중복 반복문을 통해 2차원 배열의 요소들을 호출할 수 있는 것이다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
메서드 (0) | 2023.04.04 |
---|---|
배열 지원 함수 (0) | 2023.03.31 |
배열 (0) | 2023.03.28 |
break문과 continue문 (0) | 2023.03.25 |
반복문(while문) (0) | 2023.03.24 |