Java

2차원 배열

에어팟맥스 2022. 6. 19. 18:22

===== 1차원 배열 =====

//int[] subject_arr = new int[5]; // 1행 5열
     ---------------------
     | 0 | 0 | 0 | 0 | 0 |
     ---------------------
 index =>   0  1   2   3   4 
 

===== 2차원 배열 ===== 
 값   -------------
       | 0 | 0 | 0 |
       -------------
       | 0 | 0 | 0 |
       -------------
       | 0 | 0 | 0 |
       -------------
       | 0 | 0 | 0 |
       -------------
 
  index =>  ----------------------------
                  | [0][0] | [0][1] | [0][2] |
                  ----------------------------
                 | [1][0] | [1][1] | [1][2] |
                 ----------------------------
                 | [2][0] | [2][1] | [2][2] |
                 ----------------------------
                 | [3][0] | [3][1] | [3][2] |
                 ----------------------------
 
 

public class Main_twoDimension_01 {

	public static void main(String[] args) {
    
    	int[][] point_arr = new int[4][3];

		point_arr[0][0] = 10;
		point_arr[0][1] = 20;
		point_arr[0][2] = 30;
		
		point_arr[1][0] = 40;
		point_arr[1][1] = 50;
		point_arr[1][2] = 60;
		
		point_arr[2][0] = 70;
		point_arr[2][1] = 80;
		point_arr[2][2] = 90;
		
		point_arr[3][0] = 100;
		point_arr[3][1] = 110;
		point_arr[3][2] = 120;
		
		System.out.println("point_Arr.length => " + point_arr.length); 
		// point_Arr.length => 4
		// 이차원배열명.length 은 행의 길이가 나온다.
		
		System.out.println("point_Arr.length => " + point_arr[0].length); 
		// point_Arr.length => 3
		// 이차원배열명[행의인덱스].length 은 그 행에 존재하는 열의 길이가 나온다.

 

이때, 열의 크기를 설정하지 않으면 NullPointerException 이 발생한다.

 

public class Main_twoDimension_02 {

	public static void main(String[] args) {

		int[][] num_arr = new int[4][]; // 4행 null열
		// 열의 크기를 설정하지 않으면 NullPointerException 이 발생한다.
		
		num_arr[0] = new int[3];// 0행은 3열로 설정함. 
		num_arr[1] = new int[2];// 1행은 3열로 설정함.
		num_arr[2] = new int[4];// 2행은 3열로 설정함.
		num_arr[3] = new int[3];// 3행은 3열로 설정함.
		
		num_arr[0][0] = 10;
		num_arr[0][1] = 20;
		num_arr[0][2] = 30;
		
		num_arr[1][0] = 40;
		num_arr[1][1] = 50;
	//	num_arr[1][2] = 60; // 존재하지 않기 때문에 ArrayIndexOutOfBoundsException 이 발생함.
		
		num_arr[3][0] = 70;
		num_arr[3][1] = 80;

 

		for(int i=0; i<num_arr.length; i++) { // 행
			
			for(int j=0; j<num_arr[i].length; j++) {
				String str = (j<num_arr[i].length-1)? "," : "\n";
				System.out.printf("%2d%s", num_arr[i][j],str);
			} // end of for
			
		} // end of for
		
		/*
		 10,20,30
		 40,50
		  0, 0, 0, 0
		 70,80, 0
		 */

 

		System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
		
		int[][] num_arr_2 = {{10,20,30}, // int[][] num_arr_2 = new int[][] {{10,20,30},
							{40,50},						 // new int[][] 는 생략 가능
							{0,0,0,0},
							{70,80,0}}; 
		
		/*
		 또는 
		 
		int[][] num_arr_2 = new int[][]{{10,20,30}, 
										{40,50},				
										{0,0,0,0},
										{70,80,0}}; 
					
		*/
		
		
		for(int i=0; i<num_arr_2.length; i++) { // 행
			
			for(int j=0; j<num_arr_2[i].length; j++) {
				String str = (j<num_arr_2[i].length-1)? "," : "\n";
				System.out.printf("%2d%s", num_arr_2[i][j],str);
			} // end of for
			
		} // end of for
		
		/*
		 10,20,30
		 40,50
		  0, 0, 0, 0
		 70,80, 0
		 */
		
		

	} // end of main()

}