我在使用||时遇到操作员未定义的错误。

时间:2019-06-18 04:39:51

标签: java

我正在尝试获取代码以检查输入是否没有任何内容且已输入,或者没有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“

未定义运算符” ||“

2 个答案:

答案 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")