java - 项目未正确添加到 arrayList

标签 java loops arraylist element

所以我现在正在做的事情应该非常简单。我正在将一个项目添加到 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/

相关文章:

java - 如何在Java中实现Dijkstra算法来寻找最短路径

java - 通过根据您所在的环境传递必需的参数来实例化类

java - guice单例的创建后初始化

android - ArrayList<T> 中更快的项目

java - 将对象数组转换为泛型数组

c# - 需要在值类型的对象中使用随机数生成器但不希望其依赖的负担

java - 嵌套 for 循环和变量的放置

loops - 带有自定义收集器的普罗米修斯仪表 - 去

Matlab - for loop over cell array "foreach"-like 语法循环仅在第一个元素上

Java 用 n 个值的列表扩展 arraylist