Verschachtelte for-Schleife

SleepyPaul

Neues Mitglied
Hallo,

ich versuche das Thema der verschachtelten for-Schleifen zu begreifen und möchte zu einer Bestimmten Aufgabe eine Vermutung meinerseits kundtun und hoffe, dass ich, im Falle eines Denkfehlers, eine Erklärung bekomme. Es geht um den folgenden Code:

for(int i=0; i<3; i++) {
for(int j=0; j<i; j++) {
System.out.println(j);

}
}

Würde ich bei println die Ausgabe von i anfordern, würde ich die Werte 1,2,2 bekommen, denn die innere Schleife hat eine Referenz auf die äußere und addiert +1 zu den Werten solange die Bedingung i<3 erfüllt bleibt, soweit ist mir das klar.
Bei der Anforderung der Ausgabe von j hingegen bekomme ich die Werte 0,0,1 raus.
Und genau hier folgt meine Vermutung warum ich bei der Ausgabe von j die genannten Werte bekomme.
Da die innere Schleife von der äußeren abhängig ist, die Bedingung j<i lautet und auf jeden Schleifendurchgang der äußeren Schleife die komplette innere Schleife ausgeführt wird denke ich, dass folgendes passiert:

i=0, j=0 -> Bedingung j<i nicht erfüllt
Ausgabe 0 (Bedingung wurde häufiger nicht erfüllt als erfüllt)

i=1, j=0 -> Bedingung erfüllt
i=1, j=1 -> Bedingung nicht erfüllt
Ausgabe 0 (Dasselbe wie oben, aber dadurch dass j<i und nicht j<=i gegeben ist spielt es keine Rolle, dass die Bedingung genauso oft erfüllt wurde wie nicht erfüllt)

i=2, j=0 -> Bedingung erfüllt
i=2, j=1 -> Bedingung erfüllt
i=2, j=2 -> Bedingung nicht erfüllt
Ausgabe 1 (Bedingung ist häufiger erfüllt als sie es nicht erfüllt ist)

Wäre es an der Stelle auch richtig, dass Bedingung erfüllt als true und das Gegenteil als false anzusehen ?
 
Mach doch einfach aus allen Schleifeniterationen eine Tabelle 🙂
Code:
i | i<3  | j | j<i   |Ausgabe
--+------+---+-------+------
0 | true | 0 | false | -
1 | true | 0 | true  | 0
1 | true | 1 | false | -
2 | true | 0 | true  | 0
2 | true | 1 | true  | 1
2 | true | 2 | false | -
3 | false| - | -     | -

Wäre es an der Stelle auch richtig, dass Bedingung erfüllt als true und das Gegenteil als false anzusehen ?
Korrekt. true bedeutet übersetzt "wahr" und heißt (in der in der Informatik angewandten Booleschen Logik), dass eine Aussage (wie z.B. die Bedingung einer Schleife) "wahr" ist. Analog ist false dann "unwahr" oder "falsch".
 

Neue Themen


Zurück
Oben