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

Banksy님의 프로필 이미지
Banksy

작성한 질문수

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

문제와 풀이3

문제와 풀이3 - productAdminEx 문제 질문입니다.

해결된 질문

작성

·

369

2

package inflearn.array.ex;

import java.util.Scanner;

public class ProductAdminEx {
    public static void main(String[] args) {
        // 상품 관리 프로그램 만들기 -> 처음에 for문으로 구성했으나 null 출력이 많은듯...
        int maxNumber = 10;
        String[] productNames = new String[maxNumber];
        int[] productPrices = new int[maxNumber];
        int productCount = 0;

        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < 10; i++) {
            System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료");
            System.out.print("메뉴를 선택하세요: ");
            int menu = scanner.nextInt();
            scanner.nextLine();

            if (menu == 1) {
                if (productCount > 10) {
                    System.out.println("더 이상 상품을 등록할 수 없습니다.");
                }
                System.out.print("상품 이름을 입력하세요: ");
                productNames[i] = scanner.nextLine();


                System.out.print("상품 가격을 입력하세요: ");
                productPrices[i] = scanner.nextInt();
                productCount++;

            } else if (menu == 2) {
                if (productCount == 0) {
                    System.out.println("등록된 상품이 없습니다.");
                    continue;
                } else {
                    System.out.println(productNames[i]);
                }
                for (int j = 0; j < productCount; j++) {
                    System.out.println(productNames[j] + ": " + productPrices[j] + "원");
                }
            } else {
                System.out.println("프로그램을 종료합니다");
                break;
            }
        }
    }
}

이렇게 for문을 썼을 때, 상품을 등록하고 2번 프로그램 목록보기를 선택하면 null 이 섞여나오는데 이유를 알고 싶습니다!

강의에서는 while문을 통한 무한루프를 사용하였는데 for문으로도 풀어보다 궁금해서 질문 올립니다!
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

답변 1

1

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

올리신 코드를 실행해서 확인해보았습니다 😀

image

우선 위와 같이 입력을 했을 때 상품이름이 null로 출력되는 것을 확인하였는데요,

null이 출력되는 이유는 아래의 productNames배열에 저장된 데이터와 index 값(i)를 보면 확인할 수 있습니다.

image

현재 상품은 1개만 저장된 상태인데요, 하지만 출력하는 데이터(productNames[i])를 보시면 i(반복문 횟수에 대한 인덱스)로 상품의 배열을 출력하는 인덱스에 사용함으로써 productNames[1]을 출력하여 null을 출력하는 상황으로 보시면 됩니다 ^^

 

감사합니다.

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

답변 감사합니다!!

Banksy님의 프로필 이미지
Banksy

작성한 질문수

질문하기