for Schleife mit break, verstehe die Ausgabe nicht

poolk

Mitglied
Erstmal Hallo Zusammen, gerade neu angemeldet und schon die erste Frage.

Ich habe mir vorgenommen Java zu lernen, hauptsächlich aus persönlichem Interesse. Nun habe ich das (meiner Meinung nach) gute Buch "Java - von Kopf bis Fuss" vor mir. Welches auch, wie man hört, ziemlich bekannt ist. Ich muss noch kurz einwerfen das ich absolut neu bei den "Sprachen" bin.

Ich bin die letzten Tage soweit ganz gut vorangekommen, aber jetzt stehe ich an. Kapitel 5, Seite 118, Spielen sie JVM.

Bei diesem Code:

Java:
class Ausgabe {
  public static void main (String [] args) {
    Ausgabe a = new Ausgabe();
    a.los();
  }
  void los() {
    int y = 7;
    for(int x = 1 ; x < 8 ; x++) {
      y++;
      if (x > 4) {
        System.out.print(++y + "");
      }
      if (y > 14) {
        System.out.println(" x = " + x);
        break;
      }
    }
  }
}

Ausgabe ist 1315 x = 6

Meinem Verständis nach sollte doch gar keine Ausgabe stattfinden. Im ersten durchlauf der Schleife sind die "if's" ja nicht true, danach kommt das break und die Schleife sollte verlassen werden.

Das ich fehlerhaft denke liegt auf der Hand, ich habe ja extra den Code abgetippt und ausprobiert. Ich denke ich verstehe break nicht richtig?
Im Buch finde ich leider nichts weiter dazu und die Beispiele in Google sind mir entweder noch zu Hoch :autsch: oder bestätigen aus meiner sich meine (falsche) Denkweise.

Könnte mich irgendjemand aus dem Nebel holen? 🙂

Schönen Abend noch und Gruss
 
In so einem fall, hilft das schrittweise durchgehen:
Code:
1) x=1 y=8 keine if wird true
2) x=2 y=9 keine if wird true
3) x=3 y=10 keine if wird true
4) x=4 y=11 keine if wird true
5) x=5 y=12 => erstes if ist true, aber vor der ausgabe wird y um 1 erhöht => es wird 13 ausgeben ohne zeilenumbruch
6) x=6 y=14 => erstes if==true --> ++y -> es wird also 15 ausgeben. zweites if ist auch true, x=6 wird ausgegeben und die schleife wird verlassen.

zu erwartendes Ergebnis:1315 x=6
 
wow ihr seit ja superschnell, jetzt hab ichs auch gesehen das break befindet sich ja innerhalb der zweiten if schleife. habe ich ja voll übersehen.

Danke und schönen Abend!
 

Neue Themen


Zurück
Oben