작성
·
377
답변 4
0
display함수 안에 있는 for문에 객체 생성하시고 item값을 넣으셔야죠 Item item = items[i]; 이 코드로 for문을 항상 저렇게 쓰시면 안되고 떄에따라서 쓰셔야합니다
0
안녕하세요. wosyh18님, 공식 서포터즈 OMG입니다.
아마 아래에 작성한 같은 코드로 되어 있을 것 같은데요,
반복문을 돌면서 상품명과 합계를 출력하는 것을 2번 실행하면 실행결과화면과 같이 장바구니 상품 목록을 출력하고, 그 다음 반복문이 실행할 때는 items에는 어떠한 상품도 존재하지 않아 NullPointerException
이 발생합니다.
배열의 크기를 미리 10으로 선언했기 때문에 이 배열을 전부 순회하는 코드로 반복문이 작성되어 있어서 발생하는 상황입니다 😀
Item
package access.ex;
public class Item {
private String product;
private int price;
private int quantity;
public Item(String product, int price, int quantity) {
this.product = product;
this.price = price;
this.quantity = quantity;
}
public String getProduct() {
return product;
}
public int getTotalPrice() {
return price * quantity;
}
}
ShoppingCart
package access.ex;
public class ShoppingCart {
private Item[] items = new Item[10];
private int itemCount;
int total;
public void addItem(Item item) {
if (itemCount >= items.length) {
System.out.println("장바구니가 가득 찼습니다.");
return;
}
items[itemCount] = item;
itemCount++;
}
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (Item item : items) {
System.out.println("상품명:" + item.getProduct() + ", 합계:" + item.getTotalPrice());
}
for (Item item : items) {
total += item.getTotalPrice();
}
System.out.println("전체 가격 합:" + total);
}
}
ShoppingCartMain
public class ShoppingCartMain {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Item item1 = new Item("마늘", 2000, 2);
Item item2 = new Item("상추", 3000, 4);
cart.addItem(item1);
cart.addItem(item2);
cart.displayItems();
}
}
감사합니다.
0
메인이 안보여서 메인 상태를 잘모르겟는데.
쇼핑카트 클래스 에서 items배열 선언을 보시면 참조 배열로 선언하였습니다.
참조배열 값을 지정해 주지 않으면 값이 null입니다.(배열 길이만 10으로 지정되어 있습니다.)
그리고 ddisplayItems()에서 아이템 배열을 전부를 출력하고 있습니다.
2번째 배열에 널 값이 들어가 있어서 널포인트익셉션 오류가 나네요.
addItem() 한만큼 정보가 출력될수 있게 바꿔야할거에요.