다차원 배열
배열을 저장할 변수 만들기
<1차원>
int[] array1;
<2차원>
int[][] array2;
<3차원>
int[][][] array3;
2차원 배열로 만들기
<배열 초기화 방법 1>
int[][] arr = new int[2][3];
2칸짜리 배열 안에 각 칸마다 3칸짜리 배열이 생성된다.(2행 3열)
arr(변수) = 100번지(주소)
100번지
{200번지, 300번지}
200번지
{0,0,0}
300번지
{0,0,0}
<배열 초기화 방법 2>
int arr2[][] = new int [][]{{1,2,3},{4,5,6}}
값의 개수로 배열의 길이가 정해진다.
<배열 초기화 방법 3>
int[] arr3[] = {{1,2,3},
{4,5,6},
,{7,8,9}};
<배열 초기화 방법 4>
int [][] arr4 = new int[3][];
가변배열, 행은 고정되어 있고, 열만 바꿀 수 있다.
다차원 배열이기 때문에 arr[0] = 10; 처럼 1차원에 값을 저장할 수 없다.
값을 저장하려면 2차원 인덱스까지 지정해줘야 한다.
arr[0] = new int[5];
arr[0][0] = 10;
arr[0][1] = 20;
arr[1][0] = 100;
다차원 배열의 길이 구하기
System.out.println(arr.length);
1차원 배열의 길이
System.out.println(arr[0].length);
2차원 배열길이 -> 0번 인덱스에 있는 배열의 길이
System.out.println(arr[1].length);
2차원 배열길이 -> 1번 인덱스에 있는 배열의 길이
2차원 배열을 for문과 함께 사용하기
2차원 배열의 모든 값에 접근하려면 2개의 for문이 필요하다.
for(int i = 0; i < arr.length; i++){
1차원의 길이 만큼 도는 for문, arr[2][3]일 때 2번 돈다(arr.length는 2)
for(int j = 0; j < arr[i].length; j++){
2차원 배열에 접근하기 위해 arr[2][3]일 때 3번 돈다(arr.length는 3)
int[][] scores = new int[3][5]; // int [학생수][과목수] int[]sum = new int[scores.length]; //합계 저장할 배열 double[] avg = new double[scores.length]; //평균 저장할 배열 for(int i = 0; i < scores.length; i++){ for(int j = 0; j < scores[i].length; j++){ scores[i][j] = (int)(Math.random() * 101); } System.out.println(Arrays.toString(scores[i])); } for(int i = 0; i < scores.length; i++){ for(int j = 0; j < scores[i].length; j++){ sum[i] += scores[i][j]; } avg[i] = (double)sum[i] / scores[i].length; System.out.println("sum"+sum[i]+"/avg:"+avg[i]); }