Java 다차원 배열

조수경·2021년 9월 16일
0

JAVA

목록 보기
8/26

*다차원 배열

	 - 배열안에 배열이 저장되어 있는 형태 
	 

	//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]+"등");
	    	}
	        
	        
profile
신입 개발자 입니다!!!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN