Frage von theRealCarlos, 52

Zwei aufeinanderfolge if's in Java?

Wenn ich in einem Java Code zwei aufeinanderfolgende if's habe müssen diese dann beide erfüllt sein und bei einem falschen springe ich zu else oder muss nur eines erfüllt sein? Zum Beispiel : int i=12; if (i<=10) if (i>=15) System.out.println("X"); else System.out.println("Y");

Expertenantwort
von KnusperPudding, Community-Experte für Java, 20

Wenn du eine IF-Bedingung in der Kurzform ohne Geschweifte Klammer verwendest, kann man das so lesen:

if (bedingungWahr) macheWas();

Was sich in der längeren Form so liest:

if (bedingungWahr) {
   macheWas();
}

Wird das ganze komplexer, wird das ganze schwieriger zu lesen und die Kurzschreibweise ist nicht mehr anzuraten.

Dein  Code wäre in der vollen Schreibweise so aussehen:

int i = 12;

if (i <= 10) {
    if (i >= 15) {
        System.out.println("X");
    } else {
        System.out.println("Y");
    }
}

Und welche Ausgabe jetzt getätigt wird, dürfte wohl durch die Lesbarkeit deutlich leichter zu erkennen sein.

Antwort
von Pleague91, 29

machst du dass dann nicht mit oder, also "||" in Java? weil du willst ja quasi "X" falls i zwischen 10 und 15 ist und ansonsten "Y", richtig?

Kommentar von Pleague91 ,

wäre dann if (i <= 10 || i >=15)

und meinte nicht zwischen10 und 15, sondern quasi alles im Bereich ausser zwischen 10-15

Kommentar von theRealCarlos ,

Das kann gut sein. Aber im Moment sind wir noch bei den Java Grundlagen und arbeiten noch nicht mit "oder" und "und" Trotzdem Danke. 

Antwort
von 00FF00, 26

du kannst zwei Bedingungen in einem If mit einem logischen und ( && ) oder einem logischen Oder ( || )  miteinander verknüpfen

if(i <= 10 && i >= 15){

  // Inhalt

}

In diesem Fall müssen beide Bedinungen zutreffen damit das If "Wahr" ist und ausgeführt wird.

Antwort
von asdfghj2, 11

Ist eine IF-Bedingung erfüllt, wird immer das Stückchen-Code ausgeführt, der unmittelbar nach der If-Abfrage kommt.

Beispiel:

if(i < 10)
System.out.println("foo");
System.out.println("bar");

foo wird nur ausgegeben, wenn i < 10 ist. bar hingegen wird immer ausgegeben, weil es nicht mehr unmittelbar nach der If-Abfrage kommt und somit nicht mehr zur IF-Abfrage gehört.

Schreibst du zwei IF-Abfragen direkt nacheinander:

 if (i<=10)
      if (i>=15)
             System.out.println("X");

Dann wird die zweite IF-Abfrage nur geprüft, wenn die erste Abfrage erfüllt ist. Und das X wird somit nur ausgegeben, wenn beide Bedingungen erfüllt sind.

Bei folgendem Beispiel gehört das else zur inneren IF-Abfrage und wird ausgeführt wenn i<=10 ist UND nicht >= 15 ist.

if (i<=10)
      if (i>=15)
             System.out.println("X");
else
System.out.println("Y");

Bei diesem Beispiel folgen nach der innteren If Abfrage zwei println's. Da nach einer IF-Abfrage immer nur der unmittelbar folgende Code ausgeführt wird, gehört das zweite println nicht mehr zur inneren If-Abfrage. Somit gehört das else nicht mehr zur inneren IF-Abfrage. Zur äußeren kann es jedoch auch nicht mehr gehören. Daher kann dieser Code gar nicht mehr kompiliert werden. Der Code ist also falsch:

if (i<=10)
      if (i>=15)
             System.out.println("X");
System.out.println("la");
else
System.out.println("Y");

Um das ganze etwas ordentlicher zu machen und um Verwirrung zu vermeiden, sollte man bei IF-Abfragen jedoch IMMER geschweifte Klammern verwenden.

 if (i<=10){
      if (i>=15) {
             System.out.println("X");
}
else {//doSomething
}
}
else {
//do something else
}

Verwendet man die geschweiften Klammern, wird nach jedem IF das Ausgeführt, was in der Klammer steht. Und jedes else gehört zu dem If vor der Klammer. Hier ist es dann gleich deutlich einfacher zu verstehen.

Kommentar von theRealCarlos ,

Vielen Dank für die ausführliche Antwort. Habe es jetzt definitiv verstanden :-) 

Antwort
von Alexaa1976, 23

Du musst nicht für jeden "kleinen" Fall eine If-Abfrage machen, du kannst diese auch mit einem und Operator (&& in Java) bündeln. 

z.B if(i>10 && i != 10) dann dies und das

Der Compiler geht den Code nach einander durch:

if(...)

stimmt das? dann gibt er das aus

dann

zweites if(..)

stimmt das, dann gibt er auch das aus

sonst springt er weiter 

Kommentar von Pleague91 ,

oh stimmt es ist und und nicht oder

Kommentar von Alexaa1976 ,

if(i>10 && i != 12) bedeutet z.B "Falls i größer als 10 und i ist nicht 12"

Also wenn i=11 ist stimmt das und falls i=9 oder i=12 ist stimmt das nicht 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten