Как проверить, является ли введенная пользователем строка определенной буквой в Java? - PullRequest
0 голосов
/ 11 февраля 2019

Я знаю, что это дублирующий вопрос, но мой вопрос больше касается логических операторов: я создаю простую игру «камень, ножницы, бумага».Каждый игрок должен ввести «R», «P» или «S».

Этот простой оператор if

if (!p1Input.equals("R") || !p1Input.equals("P") || !p1Input.equals("S")) {
    System.out.println("Player one, not a valid input.")
}

должен запустить оператор print, если строка не является этими тремя буквами.Однако, даже если строка равна одной из букв, она все равно выводит неверный ввод.

В качестве альтернативы, я могу сделать

if (p1Input.equals("R") || p1Input.equals("P") || p1Input.equals("S"))

И это работает, но мне нужно включить вход игрока 2 в

if (p1Input.equals("R") || p1Input.equals("P") || p1Input.equals("S") && p2Input.equals("R") || p2Input.equals("P") || p2Input.equals("S"))

, но оператор выводит только недопустимыйесли оба входа игрока не R, S или P. Я не уверен, какие операторы && или ||использовать и где.Предпочтительно я хочу использовать условие «не равно»

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

В качестве альтернативы, вы можете попробовать решение, используя регулярное выражение, как:
if(!p1Input.matches("P|R|S")): это условие будет выполнено, если вход неверен, т. Е. Отличен от P, R or S.Точно так же вы можете включить логику для player2.
Надеюсь, это поможет.

0 голосов
/ 11 февраля 2019

Это проблема с вашей логической логикой.По сути, при проверке ввода вы говорите своей программе: «если вход отличается от R или P или S, он недействителен».Ну, допустим, что пользователь печатает «P».«P» отличается от «R» и отличается от «S», поэтому ваша программа сочтет его недействительным.Вместо этого поменяйте оператор «ИЛИ» (||) на оператор «И» (&&), как показано ниже:

if (!p1Input.equals("R") && !p1Input.equals("P") && !p1Input.equals("S")) {
    System.out.println("Player one, not a valid input.")
}

Теперь вы говорите своей программе, что ввод недопустим, когдав то же время он отличается от "R" и"P" и"S" (поэтому это не может быть ни одна из этих букв).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...