인프런 커뮤니티 질문&답변

핫도그님의 프로필 이미지
핫도그

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

다차원 배열 순회 (전반전)

다차월 배열의 순회

작성

·

221

0

복습 중에 헷갈리는 게 있어서 질문 드립니다 :)

질문-1) 코드를 반복해서 작성하는 이유가 뭔가요?

(아래 비교 예시 있습니다.)

String[][] seats = new String[10][15];
        String[] eng = {"A","B","C", "D", "E","F","G","H","I","J"};
        for (int i  = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                seats[i][j] = eng[i] + (j + 1);
            }
        }
       
        for (int i  = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                System.out.print(seats[i][j] + " ");
            }
            System.out.println();
        }
String[][] seats = new String[10][15];
        String[] eng = {"A","B","C", "D", "E","F","G","H","I","J"};
        for (int i  = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                seats[i][j] = eng[i] + (j + 1);
                System.out.print(seats[i][j] + " ");
            }
             System.out.println();
        }

이렇게 줄여도 똑같이 출력되는 데 반복하는 이유가 궁금합니다.

배열 값 업데이트를 위해서 그렇게 한 건가요?

 

질문-2) 누군가 표를 구매해서 좌석 업데이트 할 때, 코드 진행 방식이 헷갈립니다. 1번에서 2차원 배열의 형태가 만들어 진 후,

seats[7][8] = "___";
seats[7][9] = "___";

여기서 업데이트 된 후에 아래에서 출력할 때  새로운 배열 
값인 "___" 이게 추가된 상태로 출력되는 건가요?
// 1번
String[][] seats = new String[10][15];
String[] eng = {"A","B","C", "D", "E","F","G","H","I","J"};
for (int i  = 0; i < seats.length; i++) {
    for (int j = 0; j < seats[i].length; j++) {
        seats[i][j] = eng[i] + (j + 1);
    }
}
// 2번
    // 누군가 H9, H10 자리에 표를 구매
seats[7][8] = "___";
seats[7][9] = "___";
for (int i  = 0; i < seats.length; i++) {
    for (int j = 0; j < seats[i].length; j++) {
        System.out.print(seats[i][j] + " ");
    }
    System.out.println(); 

 

답변 1

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?

먼저 좌석 배정 및 출력을 위해 반복문을 두 번 사용한 것은 질문에 적어주신 것처럼 한 번에 하셔도 무방합니다. 다만 저는 강의에서 (1) 배열에 값 설정, (2) 배열 순회 를 순차적으로 보여드리기 위해서 반복문을 나눠서 처리하였습니다. 실무에서도 배열에 값을 넣자마자 바로 출력하는 경우보다는 어딘가에서 값을 설정하고 또다른 어딘가(어쩌면 멀리 떨어진 곳)에서 배열을 순회하면서 값을 사용하거나 출력하는 경우가 대부분이기 때문에 연습을 통해 익숙해지셨으면 하는 마음이었습니다. 그 과정에서 배열의 값을 변경하는 부분도 추가해본 것이구요 😅

두 번째 질문에서 1번 코드가 실행되면 A1, A2, A3, ... 과 같은 값들이 배열에 입력됩니다. 그런데 다음과 같이 코드를 작성하면 (7, 8) 그리고 (7, 9) 위치에 해당하는 배열의 요소 값이 "___" 로 변경(업데이트)이 되지요.

seats[7][8] = "___";
seats[7][9] = "___";

2번 코드가 실행될 때는 그저 배열을 순회하면서 요소를 출력하는 것뿐이며 앞서 2개의 배열 요소에 대해 값 변경을 하였으므로 변경된 값이 출력되는 것입니다. (값이 추가되는 것은 아닙니다. 변경되는 것입니다. 마치 시험지에 어떤 주관식 문제의 답을 연필로 적었다가 마음이 바껴서 지우개로 지우고 새로운 답을 적는 것처럼요)

순서를 정리하면 이렇습니다.

1) 배열 전체 공간에 값 설정 (1번 코드)
2) 배열 특정 위치의 값 변경 (업데이트 코드)
3) 배열 전체 공간의 값 출력 (2번 코드)

학습에 도움되길 바라겠습니다 😊
감사합니다.

핫도그님의 프로필 이미지
핫도그

작성한 질문수

질문하기