【问题标题】:How would I find an item in my linked list in java that matches another string or doesn't match the string?如何在 java 中的链接列表中找到与另一个字符串匹配或不匹配该字符串的项目?
【发布时间】:2013-10-30 08:49:58
【问题描述】:

我在 java 中有一个自定义的通用链表(它不是 java 的 LinkedList 或任何集合)。我的链表有一个节点、一个 ListInterface、实际的 LinkedList、一个类文件和一个带有 main 方法的文件。这个链表和类应该构成一个 DVD 库存管理器。我要做的是遍历列表并检查用户传入的字符串是否等于链接列表中对象之一的变量之一的字符串。

这是我目前所拥有的:

    if (movies.isEmpty()) {
        movies.add(new Dvd(userMovie), movies.length()+1);
    } else if (!movies.isEmpty()) {
        for (int i = 1; i <= movies.length(); i++) {
            if (movies.get(i).getTitle().equals(userMovie)) {   
                movies.get(i).addCopy();
            } else if (!movies.get(i).getTitle().equals(userMovie)) {
                movies.add(new Dvd(userMovie), movies.length()+1);
            }
        }
    }

英文: 如果电影链表为空,则添加已传入的电影(userMovie)。 否则如果movies链表不为空,则检查链表中的每一项,看看传入的movie是否已经存在。如果它已经存在,请添加一个副本。否则如果传入的电影不存在,则将该电影添加到列表中。

除了最后一部分之外,这一切都有效。

我在空的时候添加一部电影并得到这个:

 Star Wars 1 // one copy of star wars has been added

然后我再次添加同一部电影并更新副本:

 Star Wars 2

然后我尝试添加不同的电影,它从两个副本而不是 1 个开始:

 Harry Potter 2

然后我尝试再次添加同一部电影以查看会发生什么,它给了我这个:

Star Wars 1
Harry Potter 3
Harry Potter 2

【问题讨论】:

  • 您不需要检查电影在else 块中是否为空;这是给定的,因为 ifelse 的意思。 else 仅在不满足 if 的条件时发生。

标签: java for-loop linked-list generic-list


【解决方案1】:

内循环的逻辑不正确。

试试这个,您只想添加一次新电影,而不是为每部与其标题不匹配的电影添加一次。

if (movies.isEmpty()) {
    movies.add(new Dvd(userMovie), movies.length()+1);
} else if (!movies.isEmpty()) {
    boolean found = false;
    for (int i = 1; i <= movies.length(); i++) {
        if (movies.get(i).getTitle().equals(userMovie)) {   
            movies.get(i).addCopy();
            found = true;
        }
    }
    if (!found) {
        movies.add(new Dvd(userMovie), movies.length()+1);
    }
}

【讨论】:

  • 首先,感谢您修复我的缩进。当我将代码从编辑器粘贴到网站时,一切都搞砸了。其次,感谢循环!我一直在尝试修复它很长时间,但我无法弄清楚如何去做。
  • @jdc987 制表符往往会弄乱缩进。最好只使用空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多