[TIL] 5월 24일]

김동규·2023년 5월 25일
0

2-13 다차원 배열 및 실습 파트에서 이해가 안되는 부분이 있었다.

int[][] array = new int[2][3]; // 최초 선언

for (int i=0; i < array.length; i++) {
 	for (int j=0; j < array[i].length; j++) {
    	System.out.println("출력값 →" + i + ", " + j);
        array[i][j] = 0; // i , j 는 노란색 네모박스 안에 있는 숫자를 의미하며 인덱스라고도 불림
        

출력값
출력값 →0, 0
출력값 →0, 1
출력값 →0, 2
출력값 →1, 0
출력값 →1, 1
출력값 →1, 2

이 과정에서 바깥쪽 for문은 new int[2]에 해당되는 부분 총 2번을 돌아가고, 안쪽 for문은 new int[3] 총 3번 돌아가게 된다고 한다. 이 내용이 해결이 안되어서 구글링을 해 보았다.

구글링 검색 결과

2중 for문(nested for문)

for 문 안에 for문이 있는 형태
바깥쪽의 i for문은 다음 반복으로 넘어가기 위해서 안쪽 j for문이 종료 되어야 i for문이 수행될 수 있다.
따라서 가장 안쪽에 있는 문장(i for문 반복횟수) * (j for문 반복횟수)만큼 수행되어야 한다.

무슨 말인지는 알겠지만, 코드에 어떻게 녹아있는 것인지 특히 j < array[i].length 이 문장이 이해가 안되어서 저녁에 친구한테 물어볼 참이다.

물어본 결과

튜터님께 물어본 것을 정리해보려 한다.

2차원 배열의 length는 쉽게 생각하면 행의 갯수를 의미한다.

public class ArrayExam {
public static void main(String[] args) {

    // 배열
    String[][] arr = { 
            { "A", "B", "C" }, 
            { "D", "E" }, 
            { "F", "G", "H", "I" } 
    };

    // row 길이
    System.out.println("arr length : " + arr.length);

    // 각 row의 column 길이
    System.out.println("1 번째 행의 원소 수 : " + arr[0].length);
    System.out.println("2 번째 행의 원소 수 : " + arr[1].length);
    System.out.println("3 번째 행의 원소 수 : " + arr[2].length);

}
}

 결과 

arr length : 3
1 번째 행의 원소 수 : 3
2 번째 행의 원소 수 : 2
3 번째 행의 원소 수 : 4

수업에 나온 예제를 정리

  1. new int [2][3]; → 2행 3열의 배열 생성
  2. 바깥쪽 for문 실행 초기값 i=0 , i < 2(행의 수); 증감연산+1)
    안쪽 for문 실행 j의 초기값 0, < 3(행의 열의 갯수); 증감연산 1)
  3. 결과적으로 상위 for문일때 하위 for문으로 이동하여 총 3번 반복하게 된다.

{0,0 0,1 0,2}

  1. 이후 하위 for문을 빠져나와 상위 for문에서 증감연산자로 0에서 1을 증가시킨 후 다시 하위 for문으로 들어간다.

  2. 마찬가지로 하위 for문을 3번 반복한다
    {1,0 1,1 1,2}

이렇게 총 6개의 출력값이 나오게 된다

profile
안녕하세요~

0개의 댓글