다차원배열
1차원
int[]array1;
2차원
int[][] array2;
3차원
int[][][] array3;
배열 초기화방법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][]; 가변배열 - 행은 고정, 열만 바꿀 수 있음.
for(int i = 0; i < arr.length; i++) - 1차원에 접근하기 위한 for문, arr.length는 arr[2][3]일 때, 2이다.
for(int j = 0; j < arr[i].length; j++) - 2차원에 접근하기 위한 for문, " arr[2][3]일 때, 3이다.
arr가 다차원 배열이기 때문에 arr[0] = 10; =>처럼 1차원에 값을 저장할 수 없다.(배열이 위치해있기 때문에)
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); -- 1번 인덱스에 있는 배열의 길이
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]);