Bei Switch-Anweisung wird default-Anweisung angezeigt

Pflaumi123

Mitglied
Guten Abend,

ich habe mir eben eine kleine Übung zum Thema Switch-Anweisungen ausgedacht. Und zwar soll mit der Eingabe einer Kalenderwoche angezeigt werden, für welche Schicht man eingetragen ist. Habe es nun mit den ersten 20 Wochen probiert, da es ja eine ausgedachte Aufgabe ist :bae:
Meines Erachtens habe ich alle Regeln beachtet, es wird auch keine Fehlermeldung ausgespuckt, allerdings wird beispielsweise bei der Eingabe "3" die default-Anweisung ausgegeben, obwohl es in dem Fall ja "Nachtschicht" sein sollte. Weiß jemand Rat? :bahnhof:

Java:
	public static void main(String[] args) {
		
		char kalenderwoche, schicht;
		kalenderwoche = Einlesen.LiesChar("kalenderwoche ");
		switch(kalenderwoche) 
		{case 1: case 4: case 7: case 10: case 13: case 16: case 19:
			System.out.print("Frühschicht"); break;
		case 2: case 5: case 8: case 11: case 14: case 17: case 20:
			System.out.print("Spätschicht"); break;
		case 3: case 6: case 9: case 12: case 15: case 18: case 21:
			System.out.print("Nachtschicht"); break;
		default: System.out.println("Error");
		
		}
	
	}

}

Vielen Dank und Liebe Grüße 🙂
 
Zuletzt bearbeitet:
'3' ist ein ASCII charakter. Das bedeutet

char 3 != int 3

Suche mal nach ASCII Tabelle und du wirst feststellen, dass 3 in int gecastet eine 51 ergeben wird.

Gruß

Claus
 
Funktioniert bei mir wunderbar, da du den Fehler machst in den Switch einen char zu schmeißen und nicht zu berücksichtigen, dass dann der ASCII Code davon geswitched wird.
'3' ist dann nämlich 51.
 
Habe schon einmal davon gehört werde mir das Thema ASCII wohl einmal ansehen. Manchmal ist die Antwort so einfach..Habe es umgeändert und es hat funktioniert. Vielen Dank!
 
Außerdem sollte auch der 'default'-Fall mit einem
break;
abschließen. Ich weis nicht genau, wie das in Java ist, aber andere Programmiersprachen garantieren mitunter nicht, dass der default-Ast tatsächlich als letzter in der Ausführungsreihenfolge steht. Das kann ein Compiler evtl. auch mal umordnen.
 

Zurück
Oben