如何比较ArrayList中的元素和特定的String?

时间:2017-04-07 19:54:03

标签: java arraylist string-comparison

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

我正在尝试使用boolean执行此操作。但我收到此错误消息:“无法解析构造函数'String(boolean)'。如何解决此问题?

私有volatile boolean的初始化:

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

3 个答案:

答案 0 :(得分:1)

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

answersList.contains(answer) 

而不是

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

答案 1 :(得分:1)

出于同样的原因String s = new String(false);导致错误,您无法从布尔值创建字符串对象。

试试这个......

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

我觉得你正在制造你想要做的事情,而不是过去那么复杂......

答案 2 :(得分:1)

  

但我收到此错误消息:&#34;无法解析构造函数   &#39;字符串(布尔值)&#39 ;.我该怎么做才能解决这个问题?

问题是你将"equals(answer)"的结果作为布尔值传递给String的构造函数,因此没有String构造函数接受{ {1}}值。

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

boolean

或简单地说:

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