Enumeration und switch

Hallo,

habe ein Problem, bei dem ich nicht weiterkomme und hoffe, dass ihr mir helfen könnt.

Meine Klasse sieht folgendermaßen aus:

public class Snake {
 public static enum Directions {UP, DOWM, RIGHT, LEFT};

 public Snake() {
 }

 public boolean move() {

 Directions dir = Directions.DOWM;

 switch(dir) {
 case Directions.DOWM:
 break;
 case Directions.LEFT:
 break;
 case Directions.RIGHT:
 break;
 case Directions.UP:
 break;
 }
 return true;
 } 
}

Beim Compilieren meldet mir der Compiler

Snake.java:36: an enum switch case label must be the unqualified name of an enumeration constant
 case Directions.DOWM:
Snake.java:38: an enum switch case label must be the unqualified name of an enumeration constant
 case Directions.LEFT:
Snake.java:38: duplicate case label
 case Directions.LEFT:
Snake.java:40: an enum switch case label must be the unqualified name of an enumeration constant
 case Directions.RIGHT:
Snake.java:40: duplicate case label
 case Directions.RIGHT:
nake.java:42: an enum switch case label must be the unqualified name of an enumeration constant
 case Directions.UP:
Snake.java:42: duplicate case label
 case Directions.UP:

Könnt ihr mir sagen, wo mein Fehler liegt?

Vielen Dank,
mainfield

Hallo,

switch funktioniert in Java nur mit Zahlen. Alle anderen Datentypen, Objekte etc. behandelt man in Java gesondert.

Gruss
Petra

Danke. Aber laut http://www.galileocomputing.de/artikel/gp/artikelID-… müsste es möglich sein, weil enum intern als Ganzzahl behandelt wird.

Hi,

ungetestet, aber mir war so als ob du nur case UP: schreiben musst…

Micha

Vielen Dank! Jetzt geht’s. :smile:

switch funktioniert in Java nur mit Zahlen. Alle anderen
Datentypen, Objekte etc. behandelt man in Java gesondert.

Seit Java 1.5 funktioniert switch auch mit Enumerations:

A switch works with the byte, short, char, and int primitive data 
types. It also works with <u>enumerated types</u> (discussed in Classes and 
Inheritance) and a few special classes that "wrap" certain primitive 
types: Character, Byte, Short, and Integer (discussed in Simple Data 
Objects ). 

http://java.sun.com/docs/books/tutorial/java/nutsand…

Der Fehler des OP lag nur darin, dass man den Klassen-Namen vor den Enumerations-Werten nicht angeben darf.