2014-10-15 4 views
3

사용자가 쇼핑 카드에서 항목을 추가 및 제거하고 주문 영수증을 파일로 인쇄 할 수 있어야하는 GUI가있는 Stamp 저장소가 있어야하는 과제를 수행하고 있습니다. 고객이 체크 아웃 할 때 장바구니에 문제가 많습니다. 항목을 제대로 추가 할 수 있는지 잘 모르겠습니다. 표시 할 수 없기 때문입니다. 현재 카트의 코드는 처음에는 Item.javaJava 장바구니

import java.util.ArrayList; 
import java.util.List; 

public class Item 
{ 
    ShoppingCart cart; 

    public void CartSelection() 
    { 
     CartItem items = new CartItem("Parcel", 12, "Italy", true, 10.00); 
     cart.AddItem(items); 
    } 
} 

CartItem.java

import java.util.ArrayList; 
import java.util.List; 

// creates a class to store items in cart arraylist 
public class CartItem 
{ 
    public CartItem(
    String Type, 
    Integer Weight, 
    String Destination, 
    Boolean NovDec, 
    Double Price) 
    { 

    } 
} 

ShoppingCart.java

import java.util.ArrayList; 
import java.util.List; 

public class ShoppingCart 
{ 
    static // creates arraylist for cart 
    List<CartItem> items = new ArrayList<CartItem>(); 

    public void AddItem(CartItem store) 
    { 
     items.add(store); 
    } 

    public static void main(String[] args) 
    { 
     System.out.println(items.get(0)); 
    } 


} 

이다, 코드는주고 있었다 오류는 The method get(int) is undefined for the type CartItem입니다.

문제의 원인을 찾고 후, 나는 지금은 올바른 방향으로

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
    at java.util.ArrayList.rangeCheck(ArrayList.java:638) 
    at java.util.ArrayList.get(ArrayList.java:414) 
    at ShoppingCart.main(ShoppingCart.java:16) 

어떤 도움이나 포인터는 크게 감상 할 수있는 코드를 변경.

답변

2

메인 메쏘드가 목록에 추가되기 전에 System.out.println(items.get(0));을 호출하는 것처럼 보입니다. 그게 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0을 설명합니다.

당신은 색인 목록에 액세스하기 전에 유효한지 확인해야합니다

public static void main(String[] args) 
{ 
    if (items.size() > 0) 
     System.out.println(items.get(0)); 
} 

이 예외를 방지 할을,하지만 난 당신이 구현하려고하는 무엇에 당신을 데려 얼마나 더 가까이 확실하지 않다 .

+0

주요 방법으로 계속은 형 CartItem에 대한 정의되지 . " 진행 방법을 모른다. – Toohey88

0

두 개의 입력을 받아서 인쇄하는 좋은 방법입니다.

public class ItemToPurchase 
{ 
    public String itemName; 
    public int itemPrice; 
    public int itemQuantity; 

    public ItemToPurchase() 
    { 
     itemName="none"; 
     itemPrice=0; 
     itemQuantity=0; 
    } 

    public void setName(String name) 
    { 
     itemName = name; 
    } 
    public String getName() 
    { 
     return itemName; 
    } 

    } 

그런 다음 다른 변수/데이터 멤버

난 단지 방법은 (int)를 얻을 "말에 다시 들어 왔

import java.util.Scanner; 
public class ShoppingCartPrinter 
{ 

    public static void main(String[] args) 
    { 
     ItemToPurchase item1= new ItemToPurchase(); 
     ItemToPurchase item2= new ItemToPurchase(); 
     Scanner kbdInput = new Scanner(System.in); 

     System.out.println("Item 1"); 
     System.out.println("Enter the item name: "); 
     item1.setName(kbdInput.nextLine()); 
    etc... 

     kbdInput.nextLine(); 

     ... 
     System.out.println ("Enter the item quantity: "); 
     item2.setQuantity(kbdInput.nextInt()); 



     int totalItem1 = item1.getPrice()* item1.getQuantity(); 


     System.out.println ("\n"+"TOTAL COST"); 
     System.out.println (item1.getName()+" "+item1.getQuantity()+" "+" @ $" +totalItem1); 
     etc... 
     System.out.println ("Total: $"+ (totalItem1 + totalItem2));   
} 
}