如何将 ArrayList 中的元素与特定字符串进行比较?

How to compare an element from ArrayList with a specific String?

我目前正在开发一款问答游戏。在下面 public void Run() 中,我想验证用户输入 String answer 的正确答案: answersList.forEach(new String.

我正在尝试用 boolean 来做到这一点。但我收到此错误消息:“无法解析构造函数 'String(boolean)'。我该如何解决此问题?

初始化私有 volatile 布尔值:

class Broadcaster extends Thread {
private volatile boolean check_point = true;

public boolean getFlag() {
    System.out.println("getFlag is running");
    return this.check_point;

}

在 BufferedReader、PrintStrem 等之后...

  public void run() {
    while (true) {
        try {
            List<String> answersList = new ArrayList<>();
            try (Stream<String> answersStream = Files.lines(Paths.get(answersFile))) {
                answersList = answersStream
                        .map(String::toLowerCase)
                        .collect(Collectors.toList());
            } catch (IOException a) {
                a.printStackTrace();
                System.out.println("The timer isn't working correctly");
            }
            if (answersList.forEach(new String(equals(answer)))) { //ERROR MESSAGE
                write.println("Right Answer");
                points++;
                check_point = true;

            } else {
                write.println("Wrong Answer");
                check_point = false;
            }
        } catch (Exception e) {
            System.out.println("Some problem with the validation");
         }
     }
   }
}

我认为最简单的方法是使用

answersList.contains(answer) 

而不是

answersList.forEach(new String(equals(answer)))

同理String s = new String(false);导致错误,您不能从布尔值创建字符串对象。

试试这个...

if (answersList.forEach(new String(Boolean.toString(equals(answer)))))

我觉得你正在把你想做的事情变得比实际情况更复杂......

But I receive this error message: "Cannot resolve constructor 'String(boolean)'. How do I do to solve this issue?

问题是您将 "equals(answer)" 的结果(布尔值)传递给 String 的构造函数,因此没有 String 构造函数接受 boolean值。


现在要解决这个问题,您可以像这样使用 lambda 表达式:

if(answersList.stream().anyMatch(str -> str.equals(answer))){
    write.println("Right Answer");
    points++;
    check_point = true;
}else{
    write.println("Wrong Answer");
    check_point = false;    
}

或者简单地说:

if(answersList.contains(answer)){
    write.println("Right Answer");
    points++;
    check_point = true;
}else{
   write.println("Wrong Answer");
   check_point = false;
}