Hilfe bei Java Programmier Aufgabe?
Schreiben Sie eine switch-Anweisung, die äquivalent zur folgenden if-Anweisung ist. Wie beurteilen Sie Ihre Lösung im Vergleich zur vorliegenden if-Anweisung?
if(n < 5 || n > 8)
System.out.println("Bereich 1");
else if(n >= 5 && n <= 7)
System.out.println("Bereich 2");
else
System.out.println("Bereich 3");
Kann mir jemand helfen ?
2 Antworten
Bereich 3 kann nie erreicht werden, weil eine Zahl ja entweder in dem Intervall liegt oder nicht. Daher kann man das weglassen. Und man muss also nur für die Werte 5, 6 und 7 "Bereich 2" anzeigen, bei allen anderen "Bereich 1". EDIT: Hab mich verlesen, Bereich 3 geht ja doch. Aber das Prinzip ist das gleiche, vielleicht kriegst du es ja selber hin.
switch(n) { case 5: case 6: case 7: System.out.println("Bereich 2"); break; default: System.out.println("Bereich 1"); }
So wird für die Werte 5, 6 und 7 "Bereich 2" angezeigt und dann wird die switch-Anweisung verlassen. Bei allen anderen Werten "defaulted" er zu "Bereich 1".
wäre diese lösung richtig ?
switch(zahl)
{
case 5:
case 6:
case 7: ("Bereich");
break;
case 8: ("Bereich 3");
break;
default ("Bereich1);
break;
}
Syntax hast du, denke ich mal, absichtlich vernachlässigt, was okay ist, solange du es nachher richtig programmierst ;) Aber die Logik ist richtig, genau.
ja wurde absichtlcih weggelassen. mir geht es nur ums verständnis.
aber ehrlich gesagt wäre diese antwort irgentwie besser oder <:
switch(n)
{
case 5:
case 6:
case 7:
print("Bereich2");
break;
default:
print("Bereich1");
break;
}
das macht doch mehr sinn oder ? weil bereich 3 wäre ja bereich 1 sozusagen..
Ne, Bereich 3 wird ja bei n=8 erreicht. Und so würde es aber zur Ausgabe "Bereich 1" führen.
Ok, vielen Dank! Ich habe es nun verstanden.
So eben aus dem Bauch raus , bin mir nicht ganz sicher :
switch(n) {
case (n<5 && n>8):
System.out.println("Bereich 1");
break;
case (n>=5 && n<=7):
System.out.println("Bereich 2");
break;
default :
System.out.println("Bereich 3");
break;
}
Der Datentypen des Case-Bezeichners muss immer mit dem von "n" (in diesem Fall Integer) übereinstimmen, da damit ja verglichen wird.
D. h.
switch(Integer) {
case eineGanzzahl:
break;
...
}
In deinem Beispiel versuchst du, einen Integer mit einem boolischen Wert zu vergleichen.
Und zur Performance hab ich diesen StackOverflow-Post gefunden:
http://stackoverflow.com/questions/6705955/why-switch-is-faster-than-if
Demnach ist switch effizienter als if, weil die JVM das Vergleichen dann optimieren kann.