break Anweisung

Diskutiere break Anweisung im Java Basics - Anfänger-Themen Bereich.
B

baker333

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
 
L

LimDul

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

baker333

Ja, jetzt habe ichs :D:D:D:D Danke, manchmal sieht man den Wald vor lauter Bäumen nicht
 
B

baker333

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

LimDul

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
 
B

baker333

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?
 
B

baker333

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?
 
T

thecain

Warum wird 0 nur einmal angezeigt? Wenn du das weisst, ist deine Frage klar
 
B

baker333

Mit der 0 fängt es an, da x = 0. Aber deshalb verstehe ich nicht warum die 4 zweimal angezeigt wird.
 
B

baker333

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?
 
B

baker333

Okay, hat sich erledigt, habe mir einige "Checkpoints" ausgeben lassen, jetzt bin ich durch die Schleife durchgestiegen. Danke Euch!
 
B

baker333

Echt dumm, wenn man immer an so einfachen Dingen hängen bleibt :D
 
Wurstkopp

Wurstkopp

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

break Anweisung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben