gpt4 book ai didi

java - 移除绳子 - 在线购物车

转载 作者:行者123 更新时间:2023-12-02 01:39:06 25 4
gpt4 key购买 nike

我对 stackoverflow 不太熟悉,所以请友善!这部分代码的目标是:除去项目()- 从 cartItems 数组中删除项目。有一个字符串(项目名称)参数。不返回任何东西。- 如果找不到商品名称,则输出此消息:购物车中未找到商品。没有删除任何内容。

这是我到目前为止所拥有的:

public void removeItem(String itemName){

if(count!=0)
count--;
int index=-1;
if (cartItems.length!=0) {
for(int i = 0; i<count; i++)
{
if(cartItems[i].getName().equals(itemName))
{
index=index-i;
break;
}
}}

if(index==-1)
{
System.out.println("Item not found in cart. Nothing removed.");
}


}

但问题是没有任何东西被删除。输出保留在那里...

最佳答案

Java 中的数组具有固定大小。假设您的列表是 ["wheel", "engine", "window"],尺寸为 3。如果你想删除“engine”,你会找到“engine”的索引(这里是1)然后将引擎后的所有内容移至一处,得到: ["wheel", "window", "window"],尺寸为 2

您将有一个变量(大小)来跟踪列表的大小,当您删除项目时,该大小将减一。如果有人尝试访问索引大于或等于列表大小的项目,这将允许您抛出错误。

如果您想再次添加引擎,只需执行 list[size] = "engine",然后将 size 变量增加 1。(例如:list[size] = "engine"; size++)列表现在为 ["wheel", "window", "engine"],大小现在为 3。

现在假设您想将另一个部分添加到列表中。现在大小为 3,但数组中没有更多空间来放置新项目。

当有人尝试在数组已满时添加项目时,您将创建一个更大的新数组(通常是原始数组大小的 1.5 倍),然后将旧数组中的所有项目复制到其中,然后插入新数组将项目放入此数组中,然后用这个更大的新数组替换旧数组。

您可以花时间自己实现所有这些,或者您可以使用已经存在的 ArrayList 类,它完全符合我所描述的功能:

List<String> carItems = new ArrayList<>();
carItems.add("wheel");
carItems.add("engine");
carItems.add("window");

现在,当我想删除引擎时,我可以简单地这样做

carItems.remove("engine");

然后,它消失了。

您也无需担心填充数组,因为当您向其中添加新项目时,它会自动扩展:

carItems.add("door");

您可以使用以下方式获取元素:

carItems.get(i);

如果您对此有任何疑问,请随时提问。

(编辑)刚刚注意到您正在存储 CarItems 数组,而不是字符串。在这种情况下,您可以使用数组实现我上面所说的内容,但不是存储字符串,而是存储 CarItem 并搜索具有需要删除的名称的 CarItem,或者使用 HashMap。

HashMap 就像一个 ArrayList,只不过其中的项是通过键而不是索引来寻址的。你会想要这样的东西:


Map<String, CarItem> carItems = new HashMap<>();


当您添加 CarItem 时,请执行以下操作:


carItems.put(carItem.getName(), carItem);

要删除指定名称的 carItem,请执行以下操作:


carItem.remove("engine");

例如

关于java - 移除绳子 - 在线购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com