해결된 질문
작성
·
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입니다.
올리신 코드를 실행해서 확인해보았습니다 😀
우선 위와 같이 입력을 했을 때 상품이름이 null로 출력되는 것을 확인하였는데요,
null이 출력되는 이유는 아래의 productNames배열에 저장된 데이터와 index 값(i)를 보면 확인할 수 있습니다.
현재 상품은 1개만 저장된 상태인데요, 하지만 출력하는 데이터(productNames[i])를 보시면 i(반복문 횟수에 대한 인덱스)로 상품의 배열을 출력하는 인덱스에 사용함으로써 productNames[1
]을 출력하여 null
을 출력하는 상황으로 보시면 됩니다 ^^
감사합니다.
답변 감사합니다!!