본문 바로가기

국비필기노트/Java

java - 2차 배열

▶2차 배열이란

-. 2차원 배열의 경우 블록 괄호 "{}" 를 2중으로 겹쳐서 2차원 배열을 표현한다

-. 행과 열의 구분에는 콤마(,)가 사용된다

-. 컴파일러가 블록괄호 "{}"의 요소를 파악하면 행, 열의 크기가 산출될 수 있으므로 배열의 크기 설정을 위한 [][]에는 배열의 크기를 명시하지 않는다.

 

▶선언과 할당 방법

-. 데이터형 [][] 배열이름 = new 데이터형 [][] {

                    { 0행0열의 값, 0행1열의 값, ... ,0행N열의 값},

                    { 0행0열의 값, 0행1열의 값, ... ,0행N열의 값},

                    ...

                    { N행0열의 값, N행1열의 값, ... ,N행N열의 값},

      };

 

▶2차원 배열에 대한 값의 대입 방법

-. 행, 열에 대한 인덱스를 통하여 값을 대입한다.

      배열이름[행][열] = 값;

 

이차배열 예시 성적표

-. 성적표를 통한 2차배열 예시

        ♧일반적인경우: 

           int [][] grade = new int [3][3];

           grade[0][0] =  75;  //둘리의 국어

           grade[1][1] =  64;  //도우너의 영어

           grade[2][1] = 100;  //또치의 영어

             ...

         일괄지정하는경우:

            Α) int [][] grade = new int [][]

                         {75,82,91} //둘리의 국어 영어 수학

                         {88,64,50} //도우너의 국어 영어 수학

                         {100,100,90} //또치의 국어 영어 수학

            B) int [][] grade = new int [][]{

                         {75,82,91},{88,64,50},{100,100,90} 

                };

            C) int [][] grade = new int [][] {75,82,91},{88,64,50},{100,100,90}

 

           => A/B/C 방법 모두 가능하나 가독성을 높히기 위해 A를 사용하는 것을 권고

 

▶2차원 배열의 길이

-. 행에 대한 측면과 열에 대한 측면을 나누어서 생각해야한다.   

      ♧행의길이

          1차 배열에서 길이를 나타냈던 수식은 2차 배열에서는 행의 크기로 조회가 된다.

           ex) int rows = grade. length;  

       ♧열의길이

          열의 길이는 각 행에 대하여 개별적으로 조회해아한다

          각 열마다 길이가 다를 수도 있다는 말인데 예를들어 또치가 수학시험을 안본다던지 도우너가 불참한다던지 하는 경우가 생길 수 있기에 각 행에 대해 열의 길이를 조회한다

           ex) int cols = grade[행].length;

 

▶2차원 배열의 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public static void main(String[] args) {
        //성적표에 대한 2차배열 생성
        //학급 성적을 위한 배열
 
       1_ int[][] grade = new int[3][3]; // grade는 2차배열의 변수
 
        //둘리의 과목별 점수
       2_ grade[0][0= 75;
            grade[0][1= 82;
            grade[0][2= 91;
        //도우너의 과목별 점수
            grade[1][0= 88;
            grade[1][1= 64;
            grade[1][2= 50;
        // 또치의 과목별 점수
            grade[2][0= 100;
            grade[2][1= 100;
            grade[2][2= 90;
 
        //2차배열을 탐색하여 총점과 평균점수 구하기
       3_  for(int i = 0; i<grade.length; i++){ 
                int sum = 0;
                int avg = 0;
       4_      forint j = 0; j < grade.length; j++){
                   
                    sum += grade[i][j];
                }
 
                //i번째 위치의 평균 점수 구하기 = 총점/ 과목수
                //i번째 학생의 과목수는 grade배열의 i번째에 대한 길이
                avg = sum / grade[i].length;
 
                System.out.println("총점 = " + sum + ", 평균 = " + avg);
 
            }
cs

 

1_ 2차배열 데이터 선언

 

2_ 2차배열의 일반적은 경우 방법으로 각 행과 열의 값 대입

 

3_ 2차배열은 2중 for문을 주로 사용하는데 첫번째 for문은 행을 기점으로 반복하는것이다. 

    열이 모두 다 반복된 후에 다시 2번째 행으로 돌아가며 반복된 문안에서 선언된 변수( sum,avg) 는 매        실행시 새로 생성된다.

 

4_ i번째 행 j열째 열의 데이터를 누적 반복하라