Java数组列表-在While循环中查找重复项

Java数组列表-在While循环中查找重复项,java,arraylist,Java,Arraylist,我试图解决这个ArrayList问题,但没有成功 无论如何,在while循环中,我必须向ArrayList添加新的字符串项 如果有重复项,则应显示一条消息,说明重复项 而循环将在单词结尾处中断 public static void main(String[] args) { ArrayList<String> lista1 = new ArrayList<>(); Scanner in = new Scanner(System.in);

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

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

如果有重复项,则应显示一条消息,说明重复项

而循环将在单词结尾处中断

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);
}
publicstaticvoidmain(字符串[]args){
ArrayList lista1=新的ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“输入单词:”);
lista1.add(in.nextLine());
如果(列表A1.containsAll(列表A1)){
System.out.println(“重复词语”);
}
如果(列表A1.contains(“结束”)){
打破
}
}
对于(字符串数据:lista1)
系统输出打印项次(数据);
}

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

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);

}
publicstaticvoidmain(字符串[]args){
ArrayList lista1=新的ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“输入单词:”);
字符串userInput=in.nextLine();
if(lista1.contains(userInput)){//检查用户的输入是否已经在lista1中
System.out.println(“重复字:“+userInput”);
}否则{//如果不是,则将用户的输入添加到列表A1
列表1.add(用户输入);
}
如果(lista1.contains(“end”){//如果lista1包含“end”,则退出循环
打破
}
}
对于(字符串数据:lista1)
系统输出打印项次(数据);
}

lista1.containsAll(lista1)
”总是正确的,不是吗?当用户输入word时,您可能应该在插入新项目之前进行检查,而循环检查当前单词是否已在列表中。也许这是我的错。今天是我使用ArrayList的第一天,所以我仍然对它们感到困惑OK,但是如果你在检查之前将其添加到列表中,根据定义,在检查时它将始终在列表中,不是吗?你应该把单词读入一个字符串,检查它是否在
列表A1中。包含(单词)
,如果返回false,则将单词添加到列表中。Federico感谢你的回答如果你只想在它还不存在时添加,你也可以使用
集,例如
LinkedHashSet
,确切地说,但我的猜测是,他们是新的链接列表。如果是这样的话,他们应该坚持使用它,直到他们理解如何使用它,然后再继续。这里没有链接列表。好吧,我的坏消息,通常是“列表”。非常感谢大家所做的一切