如何将 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;
}
我目前正在开发一款问答游戏。在下面 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;
}