繁体   English   中英

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

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

我目前正在开展一个问答游戏。 在下面的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");
         }
     }
   }
}

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

answersList.contains(answer) 

代替

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

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

尝试这个...

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

我觉得你正在制作你想要做的事情,而不是它必须做的事情......

但是我收到此错误消息:“无法解析构造函数'String(boolean)'。如何解决此问题?

问题是你将"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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM