Hallo
ich stand mit meinem Nachhilfeschüler letztens vor einer Aufgabe, die er in seinem Informatikbuch hatte.
Rahmen war ca. so: Es gibt unterschiedliche Gewcihtsklassen, also z.b. von 0 bis 40 kilo Fliegengewicht oder von 40-60 kilo schwergewicht , von 60-80 mammut etc. etc.
Jetzt sollte man mit einer geeigneten Methode mithilfe der erfragten Gewichts die Gewichtsklasse ausgeben…
JAVA:
Mit if- else - Verzweigungen geht das ja problemlos, aber meines Wissens nach muss nach case: (beim switch-case konstrukt) ein int oder char kommen, weswegen z.b. (wert
ich weiß auch nicht sicher wie das gedacht war, wenn es aber ein nicht zu intelligentes Buch war, haben sie vielleicht nach einer Kombination gesucht?
Nach dem Motto if x
Zur Abbildung von Bereichen eignet sich die switch-Anweisung in der Tat nicht. Da ist man mit if-else-Blöcken besser beraten. Um den Code noch ein bißchen lesbarer zu gestalten, könnte man auch auf else verzichten und stattdessen return-Anweisungen verwenden:
String gibGewichtsklasse(int gewicht) {
if (gewicht
Soll es aber unbedingt eine switch-Anweisung sein, könnte man sich mit folgendem Trick behelfen:
String gibGewichtsklasse2(int gewicht) {
switch (gewicht / 20) {
case 0:
case 1:
return "Fliegengewicht";
case 2:
return "Schwergewicht";
case 3:
return "Mammut";
default:
return "zu schwer";
}
}
In beiden Fällen werden negative Werte als "Fliegengewicht" eingestuft. Da es keine negativen Gewichte gibt, würde man diese Einschränkung der Verwendung in die Beschreibung der Methode aufnehmen und bei einem Verstoß eine _Exception_ werfen. Dies aber nur so zur Info am Rande.
switch erwartet, wie Du schon richtig schreibst, einen Wert vom Type int, byte, short oder char. Wenn also ein Bereich (von-bis) oder (zwischen und) ausgewertet werden soll, dann kommt man um die Nutzung einer Alternative zu switch nicht herum.
Ein kompliziertes Geflecht, nur um 3 Wertebereiche auzuwerten, macht keinen Sinn. Der If…Else Konstrukt ist da schon ganz in Ordnung.