break Anweisung

baker333

Bekanntes Mitglied
Servus,

ich habe eine (vermutlich etwas doofe) Frage zur break Anweisung.

Wenn ich jetzt ganz Naive auf den folgenden Code geschaut hätte:

Java:
int i = 0;
while (i < 10) {
  System.out.println(i);
  i++;
      if (i == 4) {
    break;
  }
}

dann hätte ich getippt, dass die Ziffer 4 noch auf dem Bildschirm ausgegeben wird, weil ja die
Java:
 System.Out.println(i)
Anweisung vor der If-Schleife kommt. Wieso ist dem nun nicht so? Und die Ausgabe ist nur:
0
1
2
3

Besten Dank
 
Servus,

ich habe eine (vermutlich etwas doofe) Frage zur break Anweisung.

Wenn ich jetzt ganz Naive auf den folgenden Code geschaut hätte:

Java:
int i = 0;
while (i < 10) {
  System.out.println(i);
  i++;
      if (i == 4) {
    break;
  }
}

dann hätte ich getippt, dass die Ziffer 4 noch auf dem Bildschirm ausgegeben wird, weil ja die
Java:
 System.Out.println(i)
Anweisung vor der If-Schleife kommt. Wieso ist dem nun nicht so? Und die Ausgabe ist nur:
0
1
2
3

Besten Dank
Als erstes: http://www.if-schleife.de/

Was steht denn nach System.out.println()? Schau dir die Zeile mal genau an 🙂 Da wird i hochgezählt, also wenn 3 ausgegeben wird, wird i danach hochgezählt und ist 4.
 
Warum wird mir aber hier noch die 5 angezeigt? Da bin ich in einer Denkschleife, es handelt sich ja um ein Postinkrement. Aber eigentlich sollte noch bei x == 5 das ganze aufhören?

Java:
public static void main (String [] args) {
         int x=0;
         while(true) {
             System.out.println("x: " + x);
               
             if (x++ == 5) {
                     break;
             }
         }
    }
 
Wie du schon sagst, Post-Inkrement. Also wird erst ausgewertet ob x gleich 5 ist und dann erst x erhöht. Also wird die Schleife genau dann verlassen, wenn wenn vor der if-Anweisung x den Wert 5 hatte
 
Beim Präinkrement (++x == 5) habe ich folgende Ausgabe:

x: 1
x: 2
x: 3
x: 4


Wie genau ist der Ablauf? x wird als erstes erhöht und dann ausgewertet, ob x gleich 5 ist. Warum wird dann aber "x: 5" nicht mehr angezeigt?
 
Ich möchte es nochmal anders ausdrücken:

Java:
public static void main (String [] args) {
         int x=0;
         while(true) {
             System.out.println(x);
             if (++x== 5) {
                     break;
             }
             System.out.println(x);
            
         }
    }

erzeugt folgende Ausgabe:
0
1
1
2
2
3
3
4
4: warum wird diese 4 noch angezeigt? Den Rest verstehe ich, aber diese "4" kommt doch eigentlich nach der "break" Anweisung?
 
Okay, oder sorgt die "Break" Anweisung, dass lediglich die If-Abfrage verlassen wird, der Code dahinter (System.out.println(x)) noch ausgeführt wird und die "while" Schleife dann verlassen wird?
 
Okay, hat sich erledigt, habe mir einige "Checkpoints" ausgeben lassen, jetzt bin ich durch die Schleife durchgestiegen. Danke Euch!
 
Mit einem Debugger kannst du Zeilenweise durch den Code gehen und dir den Zustand der Variablen nach jeder Anweisung anzeigen lassen. Damit siehst du direkt was passiert und du brauchst keine "Checkpoint logs".
 

Zurück
Oben