Hilfe bei Java Programmier Aufgabe?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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".

Cobrakadabra  09.05.2017, 21:51

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.

0
nmaier 
Fragesteller
 09.05.2017, 21:56
@Cobrakadabra

wäre diese lösung richtig ? 

switch(zahl)

{

case 5:

case 6:

case 7: ("Bereich");

break;

case 8: ("Bereich 3");

break;

default ("Bereich1);

break;

}

0
Cobrakadabra  09.05.2017, 21:58
@nmaier

Syntax hast du, denke ich mal, absichtlich vernachlässigt, was okay ist, solange du es nachher richtig programmierst ;) Aber die Logik ist richtig, genau.

0
nmaier 
Fragesteller
 09.05.2017, 22:03
@Cobrakadabra

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..
0
Cobrakadabra  09.05.2017, 22:05
@nmaier

Ne, Bereich 3 wird ja bei n=8 erreicht. Und so würde es aber zur Ausgabe "Bereich 1" führen.

0

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;
}


unsignedInt  09.05.2017, 22:55

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.

2