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

nimbus님의 프로필 이미지
nimbus

작성한 질문수

김영한의 실전 자바 - 기본편

for반복문을 임의로 바꿔 봤는데 오류가 나는 이유를 모르겠어요

작성

·

59

·

수정됨

0

안녕하세요

실전 자바 기본편 섹션3 기본형과 참조형 문제와 풀이부분에서

for (int i = 0; i < orders.length; i++) {
    System.out.println((i + 1) + "번째 주문 정보를 입력하세요.");

    System.out.println("상품명: ");
    String productName = scanner.nextLine();

    System.out.println("가격: ");
    int price = scanner.nextInt();

    System.out.println("수량: ");
    int quantity = scanner.nextInt();
    scanner.nextLine();

    orders[i] = createOrder(productName, price, quantity);
}

for 반복문을

for(ProductOrder order : orders) {
    System.out.println("상품명을 입력하세요: ");
    String productName = scanner.nextLine();
    System.out.println("가격을 입력하세요: ");
    int price = scanner.nextInt();
    System.out.println("갯수를 입력하세요: ");
    int quantity = scanner.nextInt();
    scanner.nextLine();

    order = createOrder(productName, price, quantity);
}

이렇게 고쳤봤더니 createOrder 메소드에서 order변수값이 null이라면서 오류가 나는데요..

혹시 order변수에 null값이 들어가면서 오류가 나는 이유가 뭔지 알수있을까요?

답변 1

2

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

foreach 문은 배열의 값을 복사해서 가져온 것이라 대입한다고 해서 기존의 값이 변경되지는 않습니다!

그래서 foreach 문에서는 해당 배열에 값을 대입할 수는 없습니다. 읽기 전용이라고 생각해주시면 좋을 것 같습니다 🙂

감사합니다.

nimbus님의 프로필 이미지
nimbus

작성한 질문수

질문하기