*다차원 배열
- 배열안에 배열이 저장되어 있는 형태
//1차원
int[] array1;
//2차원
int[][] array2;
//3차원
int[][][] array3;
int[][] arr = new int[2][3]; //2칸짜리 배열안에 각 칸마다 3칸짜리 배열이 생성된다.
2개의 행(가로) 3개의 열(세로) (첫번째 방법)
/*
* arr(변수) = 100번지(주소)
*
* 100번지
* {200번지, 300번지} //2칸짜리 배열 안에
*
* 200번지 // 3개칸 짜리 배열 생성
* {0, 0, 0}
*
* 300번지
* {0, 0, 0}
*
*
*/
int arr2[][] = new int[][]{{1,2,3},{4,5,6}}; //값의 개수로 배열의 길이가 정해진다.(두번째 방법)
int[] arr3[] = { {1,2,3}
,{4,5,6}
,{7,8,9} };//(세번째 방법) 대괄호의 위치는 노상관 보통은 타입뒤에 사용
int[][] arr4 = new int[3][]; //가변 배열- 일부는 지정하고 일부는 지정하지 않을 수도 있음 -> 아직 이차원 배열이 만들어 지지 않은 상태 (사용하고 싶으면 배열을 만들어야함)
arr4[0] = new int[3]; //0번째 인덱스에 3개의 배열을 만든다
arr4[1] = new int[4];
arr4[2] = new int[10];
System.out.println(arr[0]);//값이 아니라 배열일뿐임 출력하면 주소만 나옴
System.out.println(arr[0][1]);
// 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); //0번 인덱스에 있는 2차원 배열의 길이
System.out.println(arr[1].length); //1번 인덱스에 있는 2차원 배열의 길이
/*
* arr = { {10,20,0,0,0} //0번 인덱스에 5칸을 넣은것!! i는 2번돌고 j는 5,3번 돈다.
* ,{100,0,0} };
*
*/
for(int i =0; i < arr.length; i++){//1차원에 배열에 접근하는 것 1차원배열의 길이만큼 반복
for(int j=0; j<arr[i].length; j++){//2차원에 배열에 접근하는 것 2차원배열의 길이만큼 반복
System.out.println(arr[i][j]); //모든 인덱스에 접근가능
}
}
//
int[][]scores = new int[3][5]; //int[학생수][과목수] 3명의 학생과 5과목
int[] sum = new int[scores.length]; //합계 3개씩
double[] avg = new double[scores.length]; //평균 3개씩
for(int i=0;i<scores.length; i++){
for(int j=0; j<scores.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]);
}
석차구하기
int[] rank = new int[arr.length];
for(int i =0; i <rank.length; i++){
rank[i]=1; // 1로 초기화
}
for(int i=0; i<arr.length; i++){
for(int j=0;j<arr.length; j++){
if(arr[i] < arr[j]){
rank[i]++;
}
}
}
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]+ ":" + rank[i]+"등");
}