Vergleich von Enums gibt inkorrekte Werte

chaostheory

Bekanntes Mitglied
Hallo,
ich schreibe momentan ein 2D-Spiel. Ich nutze ein Enum, dass den aktuellen Stand des Spiels angibt: MENU, GAME, SCORE und END
Java:
public enum GameStatus {
	MENU(0),
	GAME(1),
	SCORE(2),
	END(3);
	
	private int id;
	
	GameStatus(int id) {
		this.id = id;
	}
	
	int getId() {
		return id;
	}
}

Die Klasse Main besitzt eine Instanzvariable, die den aktuellen Status speichert und auf die alle anderen Klassen zugreifen.
Die Klasse Draw überprüft nun den Status und zeichnet dementsprechend den Bildschirm.
Java:
public void draw() {
		switch(main.getStatus()) {
			case MENU:	drawMenu();
			case GAME:	drawGame();
			case SCORE:	drawScore();
		}		
	}

Ich habe festgestellt, dass am Anfang der Status zwar korrekt auf MENU steht, im switch-Block aber trotzdem alle drei Methoden aufgerufen werden! Nun werden alle drei Bildschirme übereinander gezeichnet, was das Spiel logischerweise ungenießbar macht. Drücke ich dann die Start-Taste wird der Status auf GAME gestellt und korrekterweise nur drawGame() aufgerufen.

Habe ich da irgendwas falsch gemacht?

Anmerkung:
Die Klasse Draw implementiert Runnable und wird als Thread von Main aufgerufen. Aber ich denke nicht, dass das was damit zu tun haben könnte, oder?
 
G

Gast2

Gast
Nein, die anderen Fälle werden nicht geprüft (dann wären die break auch obsolet ;) ). Die cases bestimmen nur den "Einstiegspunkt".
 

faetzminator

Gesperrter Benutzer
chaostheory, das Interessante ist eben, dass man "fall throughs" machen kann.
Stellen wir uns vor, wir haben eine Bankingsoftware, welche so aussehen könnte:
Java:
switch (user.getType()) {
case User.ANONYMOUS:
    return SomeConstants.LOGIN;
case User.IDIOT:
    user.removeSomeMoney();
case User.NORMAL:
    return SomeConstants.OVERVIEW;
}
Wenn der User also nicht eingeloggt ist, wird er an den Login verwiesen. Nach einem [c]return[/c] brauchts natürlich kein [c]break[/c], da die Methode sowieso verlassen wird.
Wenn der User einfach irgendein normaler User ist, dann wird er auf seine Kundenübersicht weitergeleitet. Wenn er ein Idiot ist, dann wird noch etwas von seinem Geld abgebucht und dann - dank fall through - auch an die Übersicht weitergeleitet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 double Vergleich Allgemeine Java-Themen 19
M Vergleich C# und Java Allgemeine Java-Themen 24
D Vergleich OracleJDK/OpenJDK Allgemeine Java-Themen 7
T Komplexitätsoptimierung String vergleich Allgemeine Java-Themen 4
T If Vergleich ergibt nicht das richtige Ergebnis Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4
E Problem mit Array vergleich Allgemeine Java-Themen 4
M Vergleich (unscharf) von Screenshots Allgemeine Java-Themen 0
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
S BufferedImage vergleich mit Subimage Allgemeine Java-Themen 1
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
M Datums vergleich klappt überhaupt nicht.. Allgemeine Java-Themen 4
S Calendar vergleich Allgemeine Java-Themen 2
G Zeilenweiser Vergleich Allgemeine Java-Themen 10
E Vorschläge, effizientes Hashing von Dateien für vergleich Allgemeine Java-Themen 7
W Vergleich eines Datenträgers auf neue Dateien Allgemeine Java-Themen 14
N Input/Output Vergleich von identischen Strings schlägt fehl Allgemeine Java-Themen 5
N Vergleich eigener Klassen Allgemeine Java-Themen 5
P J-Unit vergleich von 2 Objekten merkwürdig Allgemeine Java-Themen 7
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
N Vergleich von generischen Typen Allgemeine Java-Themen 2
S String-Vergleich in if Allgemeine Java-Themen 7
P JNA - JNI - pures Java - Vergleich Allgemeine Java-Themen 6
I Vergleich zweier Felder Allgemeine Java-Themen 3
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
F Vergleich zweier Listen Allgemeine Java-Themen 4
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
D Was ist schneller? Zuweisung oder Vergleich? Allgemeine Java-Themen 18
O String NICHT vergleich Allgemeine Java-Themen 7
G Vergleich von .jpg Dateien Allgemeine Java-Themen 2
I vergleich und zählen von Strings Allgemeine Java-Themen 7
K Vergleich von Icons . Allgemeine Java-Themen 8
N vergleich mit while und for schleife Allgemeine Java-Themen 7
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
minzel String in String (Vergleich) Allgemeine Java-Themen 2
J vergleich zweier datenstrukturen Allgemeine Java-Themen 6
P Vergleich: Java - .net Allgemeine Java-Themen 5
T Vergleich von Tastatureingabe mit dem was in der Datei steht Allgemeine Java-Themen 21
N Split -> IF-String vergleich Allgemeine Java-Themen 5
N Vergleich zweier Hashtable / mehrere Enumerations Allgemeine Java-Themen 7
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
B bit vergleich oder regex Allgemeine Java-Themen 1
M Enums zum ersten mal Allgemeine Java-Themen 15
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
C Enums und Vererbung Allgemeine Java-Themen 6
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
D Enums subclassen / erweitern? Allgemeine Java-Themen 2
B Vererbung bei enums ? Allgemeine Java-Themen 3
GilbertGrape Eine Art Basisklasse für Enums Allgemeine Java-Themen 9
G Typensicherheit bei enums Allgemeine Java-Themen 4
T enums - eigener startwert Allgemeine Java-Themen 5
V Enums aus Datei-Einträgen erzeugen? Allgemeine Java-Themen 6
S Methode die Enums verarbeiten kann? Allgemeine Java-Themen 2
F Frage zu switch und enums Allgemeine Java-Themen 5
B Enums hinzufügen Allgemeine Java-Themen 6
M enums ineinander schachteln Allgemeine Java-Themen 10
S Enums - statischer import Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Tiago1234 CellReference cr = new CellReference("") gibt den falschen Wert zurück Allgemeine Java-Themen 49
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
Jose05 Gibt es einen Nachteil bei dem JDK 8? Allgemeine Java-Themen 7
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
Tobero Eclipse Window builder gibt es da sowas wie @ignore? Allgemeine Java-Themen 1
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
F Überprüfen ob es Überschneidungen von Uhrzeiten (vom Typ Calendar) gibt Allgemeine Java-Themen 10
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
LimDul Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
C Variablen == gibt immer false aus. Allgemeine Java-Themen 2
E gibt es BigDouble in Java ? Allgemeine Java-Themen 14
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
R JDK installieren Gibt es ab 2019 überhaupt noch Java? Allgemeine Java-Themen 6
P JSpinner gibt leeren Wert zurück Allgemeine Java-Themen 5
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
N Gibt es etwas allgemeineres as Object? Allgemeine Java-Themen 16
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
L Gibt es in Java einen Property Editor? Allgemeine Java-Themen 2
S gibt testText nicht aus Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
L Konsole gibt Smileys aus Allgemeine Java-Themen 3
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
G Threads Gibt es eine Möglichkeit des Nichtblokierens? Allgemeine Java-Themen 5
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
R JNI if abfrage gibt immer false zurück. Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben