Ich mache (meine eigene Version von) Roulette mit Java, und eine der Arten von Wetten, die ein Spieler machen kann, ist die Farbe zu wählen, die gerollt werden soll. (Sogar ist schwarz, ungerade ist rot). Gibt es eine Möglichkeit, eine switch-Anweisung zu verwenden, um eine Zeichenfolge mit einer Aufzählung zu vergleichen?
%Vor%Das ist, was ich versuche zu bekommen, aber es lässt mich nicht die enum 'Farben' in einer switch-Anweisung verwenden.
Sie müssen eine Instanz eines Aufzählungstyps (ihr Mitglied ) haben, auf den Sie wechseln. Sie versuchen, die Enum-Klasse selbst einzuschalten, was ein bedeutungsloses Konstrukt ist. Du brauchst wahrscheinlich
%Vor% Übrigens sollte der Name Colors
, nicht colors
sein, um die sehr wichtige und nicht-optionale Java-Namenskonvention zu respektieren.
Sie können eine Aufzählung aus einer Zeichenfolge mit Enum.valueOf()
. Achte darauf, dass die anderen Antworten nicht erwähnen, dass Enum.valueOf()
eine IllegalArgumentException
liefert, wenn eine Zeichenfolge übergeben wird, die kein gültiges Mitglied der Enumeration ist.
Achten Sie darauf, dass Sie Ihren Code richtig formatieren und einrücken, er hilft uns (und Ihnen!), ihn zu lesen und zu verstehen, was vor sich geht:
%Vor% Beachten Sie, dass wir nun guess
in beiden Fällen zurückgeben, was etwas überflüssig ist. Zumindest mit dem Beispielcode, den Sie angegeben haben, müssen Sie colorVerify
überhaupt nicht verfolgen, da die Methode so lange weiterläuft, bis eine gültige Farbe eingegeben wird. Sie könnten die gesamte switch
-Anweisung in meiner Methode einfach durch return guess;
ersetzen, da Sie wissen, dass es eine gültige Schätzung ist, sobald Color.valueOf()
einen Wert zurückgibt.
Mit anderen Worten, Sie könnten Ihren Code bis zu:
reinigen %Vor% Beachten Sie, dass die Methode static
jetzt ist und eine try-with-resources Scanner
Tags und Links java enums switch-statement