작성
·
191
·
수정됨
0
안녕하세요 강사님 productAdminEx 문제에 관련해서 질문이 있습니다.
productNames[productCount] = scanner.nextLine(); 이게
원래 배우던 형식으로는 두번째 사진처럼 for문 안에서
productNames[i] = scanner.nextLine(); 이런식이어서 예를들어 i = 0인경우 productNames 배열의 0번째 인덱스에 scanner.nextLine();으로 사용자가 입력한 값이 들어가는건 이해가 가는데 productNames[productCount] = scanner.nextLine(); 면 productNames배열 안에 있는 productCount에 scanner.nextLine();로 사용자가 입력한 값을 넣는건가요..? 그리고 그 사용자가 입력한 값이 들어가있는 productCount를 productNames배열이 위치를 참조하고 있는걸까요?? 이해가 잘 안가서 질문드립니다.
(첫번째 사진)
(두번째 사진)
productNames[productCount] = scanner.nextLine(); 이게
productNames의 배열 자리에 productCount의 값을 넣는다는 의미인가요? 이해가 안갑니다..ㅜ
답변 1
0
안녕하세요!
productName 이라는 배열은 10이라는 크기의 배열이고, 이 배열에는 각각의 자리가 있습니다. 이것을 인덱스라고 부릅니다.
예를 들어 productName[0] 은 첫번째 자리(0번 인덱스)에 있는 무엇인가를 가리키게 되는 것인데요, 해당 배열의 타입이 String 이므로 productName[0] 자리에는 String이 들어가야 합니다.
위 예제에서는 productName의 인덱스에 우리가 직접 선언한 productCount 라는 변수를 이용해서 인덱스를 할당 해 주고 있습니다.
순서에 따라 설명하면
productName = new String[10]; // 크기가 10인 String 타입의 배열을 선언합니다.
productCount = 0; // 인덱스, 즉 자리를 명시 해 주기 위한 변수를 직접 선언했습니다.
따라서 해당 매서드는
productName 이라는 빈 배열에, productCount 라는 변수를 이용해, 사용자가 입력한 값(sc.nextLine()) 을 넣어주고 있는 매서드입니다.
그리고 해당 자리에 변수를 할당한 후에는
productCount++;
해당 라인을 이용해서 변수를 1 증가시킵니다.
다시 정리해보면,
while 문을 돌면서
productNames 라는 String 배열에 있는
productCount 라는 자리에 (인덱스에)
유저가 입력한 값을(sc.nextLine())
넣어주고, 해당 자리는 이미 우리가 채웠으므로 productCount 라는 자리를 하나 올려줘서 다음에 사용자가 입력하게 된다면 다음 자리에 sc.nextLine() 을 수행하려는 목적의 코드입니다.
설명이 되었으면 좋겠습니다. 감사합니다!