如果我已经将list1添加到list1array中,如何防止添加完全相同的list1

时间:2017-07-30 06:34:07

标签: java collections

对于我的问题,当我已经在数组中添加了一个问题(“我在哪里?”)时,当它回送并询问另一个问题输入时,如果我输入完全相同的问题(“我在哪里?”),它仍然会提示我写一个答案,而不是说之前问过这个问题。我希望它回答问题,而不是继续循环问问题。

public void botaddquestion(){
    do{
        Scanner user = new Scanner(System.in);
        System.out.print("[AI] Question input ==>");
        input = user.nextLine();
        if(!input.equals("end")){
            questionarray.add(input);
            System.out.print("[AI] Answer input ==>");
            answerarray.add(user.nextLine());
        }else if(!questionarray.equals(input)){
                System.out.println("This question has been asked before");
        }
    }while(!input.equals("end"));
    System.out.println("[AI] <[END]>");
    System.out.println("");
    System.out.println("[AI] Script given");
    for(int i=0; i<questionarray.size(); i++){
        System.out.println(("[AI] Question given is '" +questionarray.get(i))+"'");
        System.out.println(("[AI] Answer given is '" +answerarray.get(i))+"'");
    }
        System.out.println("");
}

5 个答案:

答案 0 :(得分:1)

您正在寻找contains方法:

} else if (questionarray.contains(input)) {
    // Here -------------^
    System.out.println("This question has been asked before");
}

答案 1 :(得分:0)

您的if语句应该排序并检查

    if (questionarray.contains(input)){
        System.out.println("This question has been asked before");            
    } else if(!input.equals("end")){
        questionarray.add(input);
        System.out.print("[AI] Answer input ==>");
        answerarray.add(user.nextLine());                
    }

答案 2 :(得分:0)

  1. 使用Set(HashSet或TreeSet,具体取决于排序对您是否重要)而不是List。
  2. 关于已经存在的问题验证的“其他问题”应该在你的if之前!结束,因为第二个if是实际将值添加到数组并且你想要阻止它。
  3. 您的验证错误,您不应该在列表和输入字符串之间执行等式。那永远不会是平等的。而是使用包含调用(来自Set接口的方法)

答案 3 :(得分:0)

问题列表似乎是一个列表。所以你应该写:

System.out.print("[AI] Question input ==>");
input = user.nextLine();
if(input.equals("end")){
    break;
}
if(questionarray.constains(input)){
    System.out.println("This question has been asked before");
    continue;
}
questionarray.add(input);
System.out.print("[AI] Answer input ==>");
answerarray.add(user.nextLine());

答案 4 :(得分:0)

您使用If($val>=$sum/2) break;存储此问题字符串。这是一个演示,

HashSet

输出:

 Set set = new HashSet<String>();
 System.out.println(set.add("hello"));
 System.out.println(set.add("hello"));