2차원 배열

[Java] 2차원 배열, 래그드 배열
Dec 18, 2023
2차원 배열
안의 값을 바꿀 수는 있지만 배열의 구조 변경은 불가능 하다.

2차원 배열을 이용하여 극장의 관객들을 표현할 수 있다. 관객이 있는 좌석은 1로, 관객이 없는 좌석은 0으로 나타낸다.

이때, 각 행의 관객 수와 총 관객 수를 구하는 프로그램을 만들어보자

 
먼저 2차원 배열을 작성한다.
int[][] seats = { {0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 1, 0} };
 
첫 번째 행의 관객 수를 구하는 코드를 작성한다.
int sum = 0; int count; int[] seat1 = seats[0]; count = 0; for (int i = 0; i < seat1.length; i++) { count = count + seat1[i]; } System.out.println("첫번째 항의 관객수는 : " + count); sum = sum + count;
 
두 번째, 세 번째 행의 관객 수를 구하는 코드를 첫 번째를 참고하여 작성
int[] seat2 = seats[1]; count = 0; for (int i = 0; i < seat2.length; i++) { count = count + seat2[i]; } System.out.println("두번째 항의 관객수는 : " + count); sum = sum + count; int[] seat3 = seats[2]; count = 0; for (int i = 0; i < seat3.length; i++) { count = count + seat3[i]; } System.out.println("세번째 항의 관객수는 : " + count); sum = sum + count; System.out.println("총 관객 수는 : "+ sum );
 
코드를 모듈화 한다.
package ex03; public class TheaterSeats { public static void main(String[] args) { int[][] seats = { {0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 1, 0} }; int sum = 0; int count; int row = -1; row ++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row+" 행의 관객수는 : " + count); sum = sum + count; row ++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row+" 행의 관객수는 : " + count); sum = sum + count; row ++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row+" 행의 관객수는 : " + count); sum = sum + count; System.out.println("총 관객 수는 : "+ sum ); } }
 
모듈화된 코드를 for문으로 바꾼다.
package ex03; public class TheaterSeats { public static void main(String[] args) { int[][] seats = { {0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 1, 0} }; int sum = 0; int count; for (int row = 0; row < seats.length ; row++) { count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row+1 + " 행의 관객수는 : " + count); sum = sum + count; } System.out.println("총 관객수 : "+sum); // row ++; // count = 0; // for (int i = 0; i < seats[row].length; i++) { // // count = count + seats[row][i]; // } // System.out.println(row+" 행의 관객수는 : " + count); // sum = sum + count; // // // row ++; // count = 0; // for (int i = 0; i < seats[row].length; i++) { // // count = count + seats[row][i]; // } // System.out.println(row+" 행의 관객수는 : " + count); // sum = sum + count; // // System.out.println("총 관객 수는 : "+ sum ); } }
 

래그드 배열

배열의 배열로 행마다 길이가 다르다.
package ex03; import java.util.Arrays; public class RaggedArray2 { public static void main(String[] args) { int[][] rarray = new int[3][]; rarray[0] = new int[] {1, 2, 3, 4}; rarray[1] = new int[] {5, 6, 7}; rarray[2] = new int[] {8, 9}; for (int[] row : rarray) { System.out.println(Arrays.toString(row)); } } }
 
Share article
RSSPowered by inblog