Tarea: Rock Paper Scissors juego.¿Cuál es la forma correcta de comparar una Cadena con un valor enum?
He creado una enumeración:
enum Gesture{ROCK,PAPER,SCISSORS};
de la que desea comparar los valores para decidir quién gana - ordenador o humano. Configuración de los valores funciona muy bien, y las comparaciones funciona correctamente (papel cubre la roca, roca aplasta tijeras, tijeras corta papel). Sin embargo, no puedo hacer que mi corbata funcione. El usuario es declarado ganador cuando hay un empate.
Ahhh ... mierda ... esto va a aclarar: userPick
es una String
con los valores rock
, paper
, o scissors
. Soy incapaz de utilizar ==
comparar userPick
a computerPick
, que, como se puede ver a continuación, se convierte como tipo Gesture
de mi 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....
que supongo que hay un problema con rock
no ser igual a ROCK
, o la String userPick
no ser capaz de igualar Gesture computerPick
ya que este último no es un String
. Sin embargo, no puedo encontrar un ejemplo de una circunstancia similar en mi libro de texto o los Tutoriales de Java de Oracle, así que no estoy seguro de cómo corregir el problema ...
¿Alguna sugerencia?
Tienes razón, no se puede comparar la cadena "roca" al Gesture.ROCK enumeración. Necesitarás una especie de cadena -> Función de mapeo de gestos para que puedas comparar dos enumeraciones. Afortunadamente, Java ya proporciona uno. Pruebe 'Gesture.valueOf ([your_string])'. Si recuerdo correctamente, esta función distingue entre mayúsculas y minúsculas. Pero podría estar equivocado. –
Esa función distingue entre mayúsculas y minúsculas. ¡Gracias! –