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