Домашнее задание: Rock Paper Scissors.Каков правильный способ сравнения строки со значением перечисления?
Я создал перечисление:
enum Gesture{ROCK,PAPER,SCISSORS};
, из которого я хочу, чтобы сравнить значения, чтобы решить, кто победит - компьютер или человек. Настройка значений работает очень хорошо, и сравнения работают правильно (бумажные обложки скалы, скальные породы, ножницы, ножницы разрезают бумагу). Однако я не могу заставить свою галстук работать. Пользователь объявляется победителем в любое время, когда есть связь.
Ааа ... дерьмо ... это будет разъяснено: userPick
является String
со значениями rock
, paper
или scissors
. Я не могу использовать ==
, чтобы сравнить userPick
с computerPick
, который, как вы можете видеть ниже, отличен как тип Gesture
из моего enum
.
if(computer == 1)
computerPick = Gesture.ROCK;
else
if(computer == 2)
computerPick = Gesture.PAPER;
else
computerPick = Gesture.SCISSORS;
if(userPick.equals(computerPick))
{
msg = "tie";
++tieGames;
}
etc....
Я предполагаю, что есть проблема с rock
не равна ROCK
или String userPick
не в состоянии соответствовать Gesture computerPick
, поскольку последний не является String
. Тем не менее, я не могу найти пример аналогичного обстоятельства в своем учебнике или учебниках Java по Java, поэтому я не уверен, как исправить проблему ...
Любые подсказки?
Вы правы, вы не можете сравнить строку «рок» в перечислениях Gesture.ROCK. Вам понадобится какая-то строка -> Функция сопоставления жестов, чтобы вы могли сравнить две перечисления. К счастью, Java уже предоставляет один. Попробуйте 'Gesture.valueOf ([your_string])'. Если я правильно помню, эта функция чувствительна к регистру. Но я могу ошибаться. –
Эта функция чувствительна к регистру. Благодаря! –