所以我现在正在做的事情应该非常简单。我正在将一个项目添加到 Arraylist
,并且如果该项目的名称等于 Arraylist
中另一个项目的名称,它会删除其中一项,只将 numItem 值添加到另一项。例如,如果玩家购买“枪支”,并且 numItem 变量设置为 1500,则会将其添加到数组列表中。如果他们再次输入“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);
}
最佳答案
嘿,你没有标记你正在编程的语言,但我假设你使用 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()))
关于java - 项目未正确添加到 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962716/