Compiti: gioco Rock Paper Scissors.Qual è il modo corretto per confrontare una stringa con un valore enum?
Ho creato un'enumerazione:
enum Gesture{ROCK,PAPER,SCISSORS};
da cui voglio mettere a confronto i valori per decidere chi vince - computer o umano. L'impostazione dei valori funziona bene e i confronti funzionano correttamente (la carta copre il rock, il rock schiaccia le forbici, le forbici taglia la carta). Tuttavia, non riesco a far funzionare la cravatta. L'utente è dichiarato vincitore ogni volta che c'è un pareggio.
Ahhh ... merda ... questo sarà chiarire: userPick
è un String
con valori rock
, paper
o scissors
. Non riesco a utilizzare ==
per confrontare userPick
a computerPick
, che, come puoi vedere di seguito, viene lanciato come tipo Gesture
dal mio 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....
sto indovinando che c'è un problema con rock
non essere uguale a ROCK
, oppure il String userPick
non essere in grado di eguagliare Gesture computerPick
perché quest'ultimo non è un String
. Tuttavia, non sono in grado di trovare un esempio di una circostanza simile nel mio libro di testo o nei tutorial Java di Oracle, quindi non sono sicuro di come correggere il problema ...
Eventuali suggerimenti?
Hai ragione, non si può paragonare la stringa "rock" al Gesture.ROCK enum. Avresti bisogno di una sorta di stringa -> Gestisci la funzione di mappatura in modo da poter confrontare due enumerazioni. Fortunatamente, Java ne fornisce già uno. Prova 'Gesture.valueOf ([your_string])'. Se ricordo correttamente, questa funzione è sensibile al maiuscolo/minuscolo. Ma potrei sbagliarmi. –
Questa funzione fa distinzione tra maiuscole e minuscole. Grazie! –