我正在尝试获取代码以检查输入是否没有任何内容且已输入,或者没有Y或N,但是我一直遇到错误。
我尝试只使用“ |”,但这是行不通的,而“”则没有任何意义。
while (answerToFirstQuestionYN.isEmpty() && !answerToFirstQuestionYN.equalsIgnoreCase("Y" || "N")) {
System.out.println("Input not recognized, try again.");
answerToFirstQuestionYN = reader.next();
}
错误消息是“对于参数类型java.lang.String,java.lang.String“
未定义运算符” ||“答案 0 :(得分:7)
||
运算符只能连接布尔表达式。因此,您需要将条件分开:
!(answerToFirstQuestionYN.equalsIgnoreCase("Y") ||
answerToFirstQuestionYN.equalsIgnoreCase("N"))
您的第一个条件(answerToFirstQuestionYN.isEmpty()
)需要删除,否则整个条件仅在字符串为空时为true。
答案 1 :(得分:3)
Java不是自然语言。用英语,我们可以说“如果答案是Y或N”,其中“或”可以连接名词短语。在Java中,“或”仅适用于真值。表达式的计算方式与数学方式相同,括号中的内容均以括号开头。 answer.equals("Y" || "N")
会首先尝试评估"Y" or "N"
,从Java的角度来看,这是胡说八道。您真正需要做的是首先具有两个真值:“如果答案为Y,或者答案为N”:
answer.equals("Y") || answer.equals("N")