所以我现在正在做的事情应该很简单。我正在向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);
}
答案 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()))