【问题标题】:Java Array List - finding duplicate in While loopJava Array List - 在While循环中查找重复项
【发布时间】:2021-04-28 13:19:17
【问题描述】:

我尝试解决这个 ArrayList 问题,但没有成功

无论如何,在 while 循环中,我必须将新的字符串项添加到 ArrayList。

如果有重复的项目,应该有一条消息说重复项目。

While 循环会被单词 END 中断

public static void main(String[] args) {
    
    ArrayList<String> lista1 = new ArrayList<>();
    Scanner in = new Scanner(System.in);
    
    while(true) {
        System.out.println("enter words: ");
        lista1.add(in.nextLine());
        if(lista1.containsAll(lista1)){
            System.out.println("Repeated words");
        }
        if(lista1.contains("end")) {
            break;
        }
    }

    for(String data:lista1)
        System.out.println(data);
}

【问题讨论】:

  • "lista1.containsAll(lista1)" 总是正确的,不是吗?
  • 您应该在插入新项目之前检查
  • 当用户输入单词时,while 循环检查当前单词是否已经在列表中。也许我对这个 containsAll 有误。今天是我使用 ArrayLists 的第一天,所以我仍然对它们感到困惑
  • 好的,但是如果您在检查之前将其添加到列表中,根据定义,当您检查时它将始终在列表中,不是吗?你应该把这个词读成一个字符串,用lista1.contains(theWord)检查它是否在那里,如果它返回false,把这个词添加到列表中。
  • 费德里科谢谢你的回答

标签: java arraylist


【解决方案1】:

如果我理解您要正确执行的操作,我相信您似乎正在尝试循环访问用户输入,直到他们键入“end”,每个输入到一个列表中,并说明您是否已经添加了该词通过打印出“重复的单词”。如果是这样的话,你已经很接近了。您只需要了解如何更好地使用列表数据结构即可。

public static void main(String[] args) {

    ArrayList<String> lista1 = new ArrayList<>();
    Scanner in = new Scanner(System.in);

    while(true) {
        System.out.println("enter words: ");
        String userInput = in.nextLine();
        if (lista1.contains(userInput)) { // checks if user's input is already in lista1
            System.out.println("Repeated word: " + userInput);
        } else { // if it's not, then add user's input to lista1
            lista1.add(userInput);
        }
        if (lista1.contains("end")) { // if lista1 contains "end", exit loop
            break;
        }
    }

    for(String data:lista1)
        System.out.println(data);

}

【讨论】:

  • 如果你只是在它不存在的时候添加,你也可以使用Set,例如LinkedHashSet.
  • 没错,但我猜它们是链表的新手。如果是这样,他们应该坚持下去,直到他们了解如何使用它,然后再继续。
  • 这里没有涉及到链表。
  • 好吧,我的错,一般是“列表”。
  • 非常感谢你们所做的一切
猜你喜欢
  • 2019-02-01
  • 2020-04-06
  • 2019-04-13
  • 1970-01-01
  • 2021-07-12
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多