正在尝试将数组列表添加到购物车对象



我正试图将东西添加到购物车中,所以在我的产品类中,我制作了一个这样的购物车:

private ArrayList<String> shoppingCart;

我做了一个篮子添加功能,它也添加到这个购物车中,就像这样:

public void addToBasket(String barcode, double price, int quantity) {
List<String> temp = new ArrayList<String>(Arrays.asList());
temp.add(barcode);
temp.add(Double.toString(price));
temp.add(Integer.toString(quantity));
shoppingCart.add(temp);

然而,该函数的其余部分仍然有效,但我在这一行上一直收到一个错误:

shoppingCart.add(temp);

我不知道为什么会发生这种事。

由于您试图将List<String>添加到类型为ArrayList<String>shoppingCart,因此出现问题

为了解决这个问题,我建议创建一个名为Item的新类,例如,它将是temp实例的类型

public class Item{
private String barcode;
private double price;
private int quantity;
public Item(String barcode, double price, int quantity){
this.barcode = barcode;
this.price = barcode;
this.quantity = barcode;
}
//getters and setters
}

然后,您的购物车将是商品的ArrayList

private ArrayList<Item> shoppingCart;

你必须按照改变你的方法addToBasket

public void addToBasket(String barcode, double price, int quantity) {
Item temp = new Item(barcode,price,quantity);
shoppingCart.add(temp);
}

对于程序的其余部分,您必须进行必要的更改,您必须记住,现在您的shoppingCart包含Item类型的对象

正如@Bashir正确指出的,您正在向特定类型的ArrayList<String> shoppingCart添加不同的types变量。

我想首先解释几件事,而不是复制粘贴他们给你的解决方案,你必须理解它背后的逻辑。

此实例ArrayList<String>Object只能接收其add()方法的String

它不允许您addpricequantity,因为tempArrayList<String>,而不是ArrayList<Integer>ArrayList<Double>

您的解决方案是将其转换为String并将其添加到ArrayList<String> temp,这在编程上是正确的,但它不是Object Oriented Programming

  • 为什么ArrayList<ArrayList<String>> shoppingCart;不适合您:

简单示例:

假设您得到的嵌套ArrayList<String>如下所示:

ArrayList<String> itemDetails = shoppingCart.get(0);
// which item belong to which shopping cart?

为了做到这一点,你必须在每个3ArrayListObjectscount,才能从shoppingCart中获得内容。

像这样:

ArrayList<String> itemDetails = shoppingCart.get(0);
String details[] = new String[3];
details[0]=itemDetails.get(0);//barcode
details[1]=itemDetails.get(1);//price
details[2]=itemDetails.get(2);//quantity

你明白我拿着它要去哪里吗?

正如@Bashir所指出的,做这件事的最佳方式。

shoppingCart的类型为ArrayList<String>,但您正试图向其中添加List<String>。您需要将shoppingCart更改为List<List<String>>,或者如果您想将所有条目一个接一个地添加到列表中,则必须将shoppingCart.add(temp);重写为shoppingCart.addAll(temp);

您的shoppingCart是一个字符串列表,这意味着您要放入的每个元素都应该是一个String
temp不是一个字符串,它也是一个字符串数组,所以它不能工作。如果你对温度的定义真的是你想要的,那么shoppingCart的定义应该是:

private ArrayList<ArrayList<String>> shoppingCart;

最新更新