if-Abfrage in switch umstellen

Hallo zusammen,

ich versuche eine if-Abfrage in ein switch-case umzustellen.

Aufgabenstellung:
Schreiben Sie eine switch-Anweisung, die äquivalent zur folgenden if-Anweisung ist. Wie beurteilen Sie Ihre Lösung im Vergleich zur vorliegenden if-Anweisung?
Code:
 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");   
}

Im Grunde stell ich mir nur die Frage, wie ich das mit dem n<5 || n>8 umsetze . Was ist, wenn n mal 0 oder einen Minuswert besitzt. Kann da ja schlecht tausend Fälle aufschreiben. Da ich nicht case n<5: schreiben kann, steh ich da vor einem kleinen Rätsel.

Ich würde es ja im Normalfall so machen:
Code:
switch(n) {
      case 1:
      case 2:
      case 3:
      case 4:System.out.println("Bereich 1");
                   break;
      case 5: 
      case 6:
      case 7: System.out.println("Bereich 2");
                   break;
      case 9: System.out.println("Bereich 1"); // aber 
                  break; 
      default: System.out.println("Bereich 3");
                    break;
    }


Wäre wirklich furchtbar nett, wenn mir da jemand helfen könnte. :)

Viele Grüße
 

tigger7985

Grünschnabel
Hallo,

von welchem Typ ist denn n?
Die if-Anweisung umzustellen geht nur sinnvoll, wenn n ein Integer ist. in diesem fall wird "Bereich 3" (7<n<8) nie erreicht.
Du bräuchtest also nur die Fälle 5 - 7 zu betrachten, der Rest ist "Bereich 1".

Grüße, Kathrin
 

sheel

I love Asm
Nop, auch daneben

5,6,7 ist Bereich 2
default ist Bereich 1
Und 8 wird Bereich 2

(default natürlich am Ende vom switch schreiben, nicht in der Mitte wie ich)