Я получаю неопределенную ошибку оператора при использовании || - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь получить код, чтобы проверить, что ввод не имеет ничего и введен или не имеет 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 ]

7 голосов
/ 18 июня 2019

Оператор || может присоединять только логические выражения. Таким образом, вы должны разделить условия на:

!(answerToFirstQuestionYN.equalsIgnoreCase("Y") ||
  answerToFirstQuestionYN.equalsIgnoreCase("N"))

Ваше первое условие (answerToFirstQuestionYN.isEmpty()) необходимо удалить, иначе все условие будет истинным, только если строка пуста.

3 голосов
/ 18 июня 2019

Ява не является естественным языком.На английском языке мы можем сказать «если ответ - Y или N», где «или» могут присоединиться к существительным.В Java «или» применяется только к значениям истинности;и выражения оцениваются как в математике, с тем, что находится в скобках в первую очередь.answer.equals("Y" || "N") сначала попытается оценить "Y" or "N", что, с точки зрения Java, бессмысленно.Что вам действительно нужно сделать, так это сначала получить два значения истинности: «если ответ - Y, или если ответ - N»:

answer.equals("Y") || answer.equals("N")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...