# Switch Case Anweisung



## Sibylle (11. Jan 2011)

Guten Abend,

ich versuche mit der Switch Case - Anweisung klar zu kommen und verstehe folgenden Sachverhalt nicht:
Gebe ich in eine Integervariable für den Monat Januar eine 1 ein und prüfe mit select case anweisung, so wird mir als Ausgabewert 31 angezeigt, für den Eingabewert 2 den Wert 28 usw.
Klappt wie gewünscht.

Gebe ich in eine Stringvariable "Januar" ein und prüfe den Inhalt der Stringvariablen erhalte ich eine Fehlermeldung.

Kann es sein, dass die Switch-Anweisung nur für numerische Daten, vielleicht nur für Ganzzahlen konzipiert wurde?

Für Hinweise besten Dank im Voraus.

Gruß

Sibylle


----------



## eRaaaa (11. Jan 2011)

Nicht nur, aber fast  


			
				http://www.iks.hs-merseburg.de/~uschroet/Literatur/Java_Lit/JAVA_Insel/javainsel_02_006.htm#mj247a7d323638c934f08abfb2bfc8e18f hat gesagt.:
			
		

> Ausdrücke sind auf den primitiven Datentyp int beschränkt. Elemente vom Datentyp byte, char und short sind somit erlaubt, da der Compiler den Typ automatisch auf int anpasst. (Ebenso sind die Aufzählungen und die Wrapper-Objekte Character, Byte, Short, Integer möglich, da Java automatisch die Werte entnimmt – mehr dazu in Kapitel 6, »Eigene Klassen schreiben«, und Kapitel 8, »Exceptions«.) Es können nicht die Datentypen boolean, long, float, double benutzt werden.



Strings kommen erst in der nächsten Java Version dazu, musst dich also noch ein wenig gedulden 

(in deinem Fall würde sich evtl. ein enum -> Aufzählung anbieten!)


----------



## Sibylle (11. Jan 2011)

Hallo Basti,

ich danke Dir für die rasche Antwort.
Na da habe ich einige Zeit verplembert, aber nun ist es klar.
Danke.
Einen schönen Abend.
Gruß
Sibylle


----------



## Landei (11. Jan 2011)

Was du schon jetzt verwenden kannst, sind enums. Du brauchst also alle Monate, etwa so:

```
enum Monat {Jaguar, Zebra, Nerz, Mandrill, ...} //jedenfalls nach Christian Morgenstern
```
Diese Werte kannst du in switch verwenden.

```
Monat m = ...
switch(m) {
  case Jaguar : return 31;
  case Zebra : return 28;
  ...
}
```
 Von einem String kommst du ganz leich zum jeweiligen enum:

```
Monat m = Monat.valueOf("Jaguar");
```

Es ist auch möglich, einem enum auch Werte mitzugeben: Enum Types (The Java™ Tutorials > Learning the Java Language > Classes and Objects)


----------

