【问题标题】:Item not adding to arrayList correctly [duplicate]项目未正确添加到arrayList [重复]
【发布时间】:2019-05-03 02:54:29
【问题描述】:

所以我现在的工作应该很简单。我正在向Arraylist 添加一个项目,如果该项目的名称等于Arraylist 中另一个项目的名称,它会删除其中一个项目并将numItem 值添加到另一个项目。因此,例如,如果玩家购买“枪支”,并且 numItem 变量设置为 1500,则将其添加到数组列表中。如果他们再次输入“枪”,并且 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);
}

【问题讨论】:

    标签: java loops arraylist element


    【解决方案1】:

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

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

    您应该阅读字符串比较: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()))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多