- 다차원 배열 : 배열 항목에 또 다른 배열이 대입되는 것
이차원 배열 선언
[표현법]
1. 자료형 배열명 [][];
2. 자료형 [][] 배열명;
3. 자료형 [] 배열명 [];
이차원 배열 할당
// 배열명 = new 자료형[행크기][열크기];
arr3 = new int[2][3];
// 이차원배열 선언과 동시에 할당
int[][] arr = new int[3][5];
- 배열변수.length = 2
배열변수[0].length = 3
다차원 배열 각 항목에 접근하는 법
변수[1차원인덱스][2차원인덱스]...[N차원인덱스]...
값 목록으로 다차원 배열 생성
- 타입 뒤에 대괄호를 차원의 수만큼 붙이고 값 목록도 차원의 수만큼 중첩
타입[][]변수 = {
{값1, 값2, ...},
{값1, 값2, ...},
...
};
가변 배열
- 행의 크기는 정해져있으나 각각의 행 별 열의 갯수가 정해지지 않은 상태
- 이차원 배열 == 일차원 배열 여러개 묶은 형태
- 즉, 묶여있는 일차원 배열의 길이가 같을 필요는 없다
- 행 크기는 생략이 불 가능하지만, 열크기는 사실 생략이 가능하다. 각 행의 열의 길이가 변경 가능하다.
int[][] arr = new int[3][]; // 가변배열
실습문제
public void method5() {
// char[][] 가변 배열 생성
//char[][] arr = new char[3][];
char[][] arr = { {'a','b','c'} , {'d','e'}, {'f','g','h','i'} };
// 다음과 같은 문자 행과 열대로 배열에 담기
/*
* a b c
* d e
* f g h i
*/
arr[0] = new char[3];
arr[1] = new char[2];
arr[2] = new char[4];
char value = 'a';
for(int i = 0; i< arr.length; i++) {
for(int j =0; j< arr[i].length; j++) {
arr[i][j] = value++;
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
public void method7() {
/*
* int 형 2차원 배열을 만들어
* 0번 행에는 국어점수 3개를 입력받고
* 1번 행에는 영어점수를 3개 입력 받은후
*
* 각각 반복문을 통해 출력
*
* 입력예시 : xx점수를 입력하세요 :
* 출력예시 : xx점수 : xx xx xx
*/
Scanner sc = new Scanner(System.in);
int [][] arr = new int[2][3];
String [] subjects = {"국어","영어","수학","과학"};
for(int i = 0; i< arr.length; i++) {
String subject = i == 0 ? "국어" : "영어";
for(int j =0; j< arr[i].length; j++) {
System.out.printf("%s점수를 입력하세요 : ", subjects[i] /*subject*/);
arr[i][j] = sc.nextInt();
}
System.out.println();
System.out.printf("%s점수 : %d %d %d ", subject , arr[i][0], arr[i][1],arr[i][2]);
}
public void practice8() {
// 1차원 배열에 12명의 학생들을 출석부 순으로 초기화 하고
// 2열 3행으로 2차원 배열 2개를 이용하여 분단을 나눠
// 1분단 왼쪽부터 오른쪽, 1행에서 아래 행 순으로 자리를 배치하세요.
// <출석부>
// 1. 강건강 2. 남나나 3. 도대담 4. 류라라 5. 문미미 6. 박보배 7. 송성실 8. 윤예의 9. 진재주 10. 차천축 11. 피풍표 12. 홍하하
String [] arr = {"강건강","남나나","도대담","류라라","문미미","박보배","송성실","윤예의","진재주","차천축","피풍표","홍하하"};
String [][] class1 = new String[3][2];
String [][] class2 = new String[3][2];
int index = 0;
System.out.println("== 1분단 ==");
for(int i =0; i<class1.length; i++) {
for(int j =0; j<class1[i].length;j++) {
class1[i][j] = arr[index++];
System.out.print(class1[i][j]+" ");
}
System.out.println();
}
System.out.println("== 2분단 ==");
for(int i =0; i<class2.length; i++) {
for(int j =0; j<class2[i].length;j++) {
class2[i][j] = arr[index++];
System.out.print(class2[i][j]+" ");
}
System.out.println();
}
}
'JAVA > 2. 객체 지향 프로그래밍' 카테고리의 다른 글
[JAVA] 향상된 for문 (for each문) (0) | 2023.11.16 |
---|---|
[JAVA] 배열 복사 (0) | 2023.11.16 |
[JAVA] 배열 (0) | 2023.11.16 |
[JAVA] String 타입 및 관련 메소드 (0) | 2023.11.16 |
[JAVA] null과 NullPointException (0) | 2023.11.16 |