Votre panier en Java


Je fais une mission dans laquelle je dois avoir un magasin de timbres avec une interface graphique, où les utilisateurs doivent pouvoir ajouter et supprimer des articles d'une carte d'achat, puis imprimer un reçu de commande dans un fichier lorsque le client effectue son paiement. J'ai beaucoup de problèmes avec le panier, car je ne sais pas si les articles sont ajoutés correctement, car je ne peux pas les afficher. Actuellement, le code pour le panier est

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));
    }


}

Article.java

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)
    {

    }
}

Pour commencer, le code me donnait une erreur en disant The method get(int) is undefined for the type CartItem.

Après avoir cherché la cause du problème, j'ai modifié le code maintenant j'obtiens

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)

Toute aide ou pointeurs dans la bonne direction serait grandement appréciée.

Author: Eran, 2014-10-15

2 answers

Il semble que votre méthode principale appelle System.out.println(items.get(0)); avant qu'un élément ne soit ajouté à la liste. Cela explique le java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 que vous obtenez.

, Vous devez vérifier que l'index est valide avant d'accéder à la liste :

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

Cela empêcherait l'exception, mais je ne sais pas à quel point cela vous rapprocherait de tout ce que vous essayez d'implémenter.

 2
Author: Eran, 2014-10-15 06:34:49

C'est un bon moyen de saisir deux éléments, puis de les imprimer.

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;
   }

    }

Continuer avec d'autres variables / membres de données

Puis la méthode principale

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));         
 }
}
 0
Author: user6913615, 2016-10-03 03:11:49