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

missjj312님의 프로필 이미지

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이3

문제와풀이3 질문입니다!

작성

·

189

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)


3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요 강사님 혹시 문제에 대한 이해가 되긴하지만 정확한 이해가 잘 안되다보니 질문을 남깁니다! productNames[] 와 productPrices[] 배열안에 productCount를 넣는 이유를 자세히 설명가능할까요..? 저는 for문으로 처음시도를해봤는데 안되고 한참을 고민하면서 여러시도를 한 끝에 해결이 되질않아 풀이과정을 봤습니다. 그래서 풀이방식이 궁금해져서요!! (제가 궁금해하는 부분에 대한 설명이 부족한거같아 추가로 더 적습니다! for문을 돌려

for(int i = 0; i <= maxProducts; i++) {

System.out.print("상품 이름을 입력하세요 :");

productNames[i] = sc.nextLine();

System.out.print("상품 이름을 입력하세요 :");

productPrices[i] = sc.nextInt();

 

productCount++; }

식으로 했습니다! 이방식이 안되는 이유도 궁금해서요!

답변 2

1

안녕하세요. missjj312님, 공식 서포터즈 y2gcoder입니다.

for 문은 반복 횟수가 정해진 반복에, while은 반복 횟수가 정해지지 않은 반복에 적합합니다! 그런데 상품 관리 프로그램 만들기 문제에서 프로그램을 종료하는 조건은 maxProducts 만큼 루프를 돌고 나서가 아닙니다 🙂

3 종료를 선택하기 전까지 상품 관리 프로그램은 계속 실행되고 있어야 합니다. 또한 maxProducts 는 최대로 등록할 수 있는 상품 수입니다. 해당 루프 동안 입력을 받는다고 하면, 만약 사용자가 도중에 등록만 하지 않고 2 상품 목록을 호출할 때는 어떻게 될 지 생각해보시면 좋겠습니다!

그런 의미에서 maxProducts 만큼 반복하는 for문을 사용하는 것은 우리 상품 관리 프로그램에 버그를 넣어주게 됩니다(3. 종료를 입력하는 것 외에 maxProducts 수만큼 입력받고 나면 자동으로 종료되는 버그가 생긴 것입니다! 그런 요구사항은 없습니다 🙂 )

 

감사합니다.

missjj312님의 프로필 이미지
missjj312
질문자

감사합니다!

1

문제 자체를 잘 이해를 하셔야해요 productCount변수를 쓰는 의미가 상품이 10개 까지만 등록이 가능한거잖아요 그래서 productNames[] 와 productPrices[] 배열안에 변수를 쓰는겁니다.사실 결과값만 잘 출력되면 어떤 코드가 정답인지는 판단할수없지만 선생님코드는 가독성이 있기떄문에 저렇게 쓰는게맞죵

missjj312님의 프로필 이미지
missjj312
질문자

문제파악을 먼저 잘해야겠네요 ㅠㅠ 도움 주셔서 감사합니다!