Beispiel für eine einfache Verschachtelung für eine Schleife

8

Momentan studiere ich für meinen Java-Test. Beim Lernen bin ich auf ein kleines Problem gestoßen.

In dieser for-Schleife:

%Vor%

Die Ausgabe ist:

%Vor%

Mein Problem ist, ich verstehe es nicht. Wenn ich diesen Code lese, denke ich, dass es so aussehen sollte:

%Vor%

Warum ist das nicht der Fall?

    
에이바 18.03.2009, 02:18
quelle

7 Antworten

14

Bei jeder I-Wiederholung starten Sie eine komplett neue I-Wiederholung von j.

Sie beginnen also mit i == 1, dann j == 1,2,3 in einer Schleife. Dann ist i == 2, dann j == 1,2,3 in einer Schleife, etc.

Gehen Sie Schritt für Schritt vor und es wird Sinn machen.

    
Reed Copsey 18.03.2009, 02:20
quelle
6

Was Sie haben, ist eine Schleife innerhalb einer anderen. Stellen Sie sich das wie den Minutenzeiger und den Stundenzeiger einer Uhr vor. Der Minutenzeiger wird umhergehen (1,2,3,4 ... 59), während der Stundenzeiger immer noch auf 1 steht. Wenn wir also Stunden als i und Minuten als j behandeln, haben wir:

>

1 1
1 2
1 3
...
1 60

Und dann ändern sich die Stunden zu 2, und der Minutenzeiger geht weiter:
2 1
2 2
2 3
...
2 60

Und wir beenden, sobald wir zu

kommen

12 1
12 2
12 3
...
12 60

wo die Schleife endet. Ihr Beispiel ist ähnlich.

(Für das Pedantische weiß ich, dass es auf Null basiert, aber um es zu veranschaulichen, ist es vielleicht einfacher zu verstehen)

    
Smashery 18.03.2009 02:22
quelle
3

Schauen wir uns einmal an, wie das aussehen würde, wenn wir von Schleifen zu wiederholtem Code wechseln würden. Zuerst die äußere Schleife:

%Vor%

Jetzt die innere Schleife:

%Vor%

Macht es jetzt Sinn?

    
Michael Myers 18.03.2009 02:24
quelle
1

Das äußere für "ergreift" das innere für und iteriert über IT. h., Sie haben eine for-Schleife innerhalb einer for-Schleife. Für jedes von i im Bereich 1..3 müssen Sie auch j von 1..3 loopen. Wenn ich 2 wird, setzt j auf 1 zurück und die innere Schleife läuft wieder von vorne.

    
Stefan Kendall 18.03.2009 02:20
quelle
1

Sie haben eine Schleife innerhalb einer anderen Schleife.

Also führen Sie für jede Iteration der äußeren Schleife die innere Schleife vollständig aus, beginnend bei 1 bis 3.

Also druckst du j = 1,2,3 für jeden Wert von i. In diesem Fall ist i 1,2 und 3.

    
Alan 18.03.2009 02:21
quelle
1

Für jede Iteration der äußeren Schleife wird die komplette innere Schleife ausgeführt. Zum Beispiel, wenn i = 1, innere Schleife wird 3 mal ausgeführt und Sie werden erhalten 1 1 1 2 1 3

    
Upul Bandara 18.03.2009 02:31
quelle
1

Jedes Mal, wenn Sie nach Loops verschachteln (so heißt es, wenn Sie eines in ein anderes einfügen), fügt es grundsätzlich eine weitere "Dimension" hinzu. Wenn Sie eine einzelne for-Schleife haben, ist es wie eine gerade Linie. Also, wenn unsere erste Schleife von 1 bis 5 wäre, wäre es:
1 2 3 4 5

Wenn Sie eine zweite Schleife hinzufügen (sagen wir 1-3) (Sie lesen von oben nach unten von links nach rechts, die erste Zahl repräsentiert die erste Variable usw.)

11 21 31 41 51
12 22 32 42 52
13 23 33 43 53

Und wenn du eine dritte Schleife (sagen wir 1-2) hinzufügst (ich kann hier offensichtlich nicht 3 Dimensionen machen, also bitte mit mir)

111 211 311 411 511 || 112 212 312 412 512
121 221 321 421 521 || 122 222 322 422 522
131 231 331 431 531 || 132 232 332 432 532

Also ist die Gesamtzahl der Iterationen (wie oft Sie die Schleifen durchlaufen) das Produkt der Schleifen. Dieser ist ein 3 * 5 * 2, also wird es 30 Mal iterieren.

    
Retsam 18.03.2009 02:35
quelle

Tags und Links