Hallo an alle,
brauche ein wenig Hilfe von euch und zwar, mit den geschachtelten Schleifen komme ich nicht ganz zurecht.
Folgendes:
Es soll ein Schachbrett nummeriert werden in der Form:
Konsolenausgabe:
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 10
4 5 6 7 8 9 10 11
5 6 7 8 9 10 11 12
6 7 8 9 10 11 12 13
7 8 9 10 11 12 13 14
8 9 10 11 12 13 14 15
Das ganze soll mit einer geschachtelten for Schleife realisiert werden die eine entsprechende formatierte Ausgabe erzeugt.
Die Lösung lautet (kommt nicht von mir):
package schachbrett;
public class Main {
1. public static void main (String[] args) {
2. for (int i=1; i <= 8; i++) {
3. for (int j=i; j <= 8+i-1; j++)
4. if (j < 10 && j != i)
5. System.out.print(" " + j + " ");
6. else
7. System.out.print(j + " ");
8. System.out.println();
}
}
}
So, jetzt kommt's. Nach meinem Verständnis, schaut es so aus:
Die Bedienung in die Zeile 4 ist "false" denn,
j < 10 ist "true"
j != i ist "false"
true & false ergibt false.
Das Programm springt zur Zeile 7 und gibt eine 1 auf die Konsole aus (die erste 1 oben links).
Nun steht in meinem Buch (Kapitel "Entscheidungsanweisungen" if-else), daß nur die erste Anweisung nach if oder else dazugehören --> die Zeile 8 gehört also nicht mehr zur "else" Anweisung und wird auf jeden Fall ausgeführt. Warum springt das Programm dann zur Zeile 2, rattert alles durch und gibt anschließend die Zeile 5 aus anstatt erst eine neue Zeile zu beginnen, eben "System.out.println?
Auch wenn es viel Mühe macht, kann mir bitte jemand den Ablauf kurz erklären? Ich habe nur einen Lösungsvorschlag hier aber keine Erklärung dazu, was passiert wenn... usw.
Möchte nicht nur eine Lösung haben sondern verstehen wie es funktioniert und in das Buch wird sehr wenig auf geschachtelte Schleifen eingegangen aber als "Hausaufgabe" tauchen die auf.
Vielen Dank im Voraus für die Mühe und allen einen guten Rutsch ins Jahr 2009 !!