项目未正确添加到arrayList

时间:2019-05-03 02:54:29

标签: java loops arraylist element

所以我现在正在做的事情应该很简单。我正在向Arraylist添加一个项目,如果该项目的名称等于Arraylist中另一个项目的名称,它会删除其中一个项目,而只是将numItem值添加到其他项目。因此,例如,如果玩家购买“枪支”,并且numItem变量设置为1500,则会将其添加到arraylist中。如果他们再次输入“ guns”,并且那个numItem是2500,我想摆脱arrayList中的元素之一,只需将其余的numItem设置为4000。

public void addItem(Item item)
{
    for(int i = 0; i < this.ownedItems.size(); i++)
    {
        if(item.getName() == this.ownedItems.get(i).getName())
        {
            item.setNumItem(item.getNumItem() + this.ownedItems.get(i).getNumItem());
            this.ownedItems.remove(this.ownedItems.get(i));
        }
    }
    this.ownedItems.add(item);
}

1 个答案:

答案 0 :(得分:1)

嘿,您没有标记正在编程的语言,但我认为您使用的是Java。如果您更改字符串比较,则代码应该可以解决问题。

如果您通过声明string1 == string2来比较字符串,那么事情将不会像您期望的那样进行。而是使用string1.equals(string2)

您应该阅读String比较:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)

How do I compare strings in Java?

如果您使用C#,我认为相同的主体或多或少都适用:

C# difference between == and Equals()

所以改变

if(item.getName() == this.ownedItems.get(i).getName())

进入

if(item.getName().equals(this.ownedItems.get(i).getName()))