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

박창은님의 프로필 이미지
박창은

작성한 질문수

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

for 반복문에 대한 질문

작성

·

131

1

강의에서 for을 쓸때

for (선언;조건;증감) {수행할 명령}이라고 하셨는데

조건이 충족되면,

증감을 먼저 하는겁니까? 아님 수행할 명령을 먼저합니까?

사실 continue 강의에서,궁금한것.png에서 원래 for(int i)가 1이 되어야 하는데, 보시는 것처럼 0으로 해놨더니 20번 손님까지 찾아야 되는데 19번까지만 출력되더라고요 궁금해서 물어봅니다.

두 질문 모두 볼드체 처리를 해서 둘다 답변 해주셨으면 합니다.

답변 1

0

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

안녕하세요?

for 반복문에서의 동작 순서는 다음과 같습니다.

1) 선언
2) 조건 확인
3) 수행할 명령
4) 증감
... 이후 2), 3), 4) 반복

그래서 첫 번째 질문에 대한 답은 "수행할 명령을 먼저" 합니다.

for 반복문은 일반적으로 정해진 횟수에 맞춰서 반복을 수행하기 위한 것인데요. 다음과 같이 i 를 0 부터 시작하여 50 보다 작다는 조건을 만족하는 동안 i++ 을 하면서 반복 수행하게 되면, 기본적으로는 50번을 수행하게 됩니다. 이때 i 의 값은 0, 1, 2, 3, ... , 49 까지 총 50개의 값을 순서대로 가지게 되지요.

for (int i = 0; i < 50; i++) {
    System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");

    sold++; // 판매 처리
    if (sold == max) {
        System.out.println("금일 재료가 모두 소진되었습니다.");
        break;
    }
}

만약 i 를 1 부터 시작하여 50 보다 작거나 같다는 조건을 만족하는 동안 i++ 을 하면서 반복 수행하게 되면, 똑같이 50번을 수행하게 됩니다. 다만 이때 i 의 값은 1, 2, 3, 4, ... , 50 까지 총 50개의 값을 순서대로 가지게 되고요.

for (int i = 1; i <= 50; i++) { // 이 부분이 변경되었어요
    System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");

    sold++; // 판매 처리
    if (sold == max) {
        System.out.println("금일 재료가 모두 소진되었습니다.");
        break;
    }
}

그래서 두 번째 질문에 답을 드리자면,

강의에서와 같이 i 를 1 부터 시작하여 50 보다 작거나 같다는 조건을 만족하는 동안 반복 수행하게 되면, i 의 값은 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 이렇게 바뀌며 1번 손님부터 20번 손님까지 치킨을 판매하게 됩니다.

하지만 질문주신 것처럼 i 를 0 부터 시작하여 50 보다 작다는 조건을 만족하는 동안 반복 수행하게 되면, i 의 값은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 이렇게 바뀌며 0번 손님부터 19번 손님까지 치킨을 판매하게 됩니다. 즉, 문의주신 내용은 올바른 동작이 맞는 것입니다.

다만 똑같이 20명의 손님에게 치킨을 판매하는 과정에서 첫 번째 손님을 '0번 손님' 부터 시작하느냐 '1번 손님' 부터 시작하느냐의 차이로 이해해주시면 되겠습니다 😊

설명을 천천히 읽어보시고 여전히 이해가 되지 않으신다면 다시 질문 남겨주시면 다른 방법으로 설명드리겠습니다.

감사합니다.

박창은님의 프로필 이미지
박창은
질문자

네 이해했습니다!

박창은님의 프로필 이미지
박창은

작성한 질문수

질문하기