2016-05-03 7 views
-5

Ich verstehe nicht, wie funktioniert die verschachtelte for Schleife im Code und was ist die Rolle der Pause?Wie funktionieren verschachtelte Schleifen und Unterbrechungen in Java?

package demo; 
import java.util.Scanner; 
public class Demo { 

public static void main(String[] args) { 
    int i,j,k; 

    for(i=1; i<= 5;i++) 
    { 
     for(j=1;j<=i; j++){ 

      for(k=1;k<=j;k++) 
      { 
      System .out.print(k); 
      break; 
      } 
    } 
    System.out.println(); 
    } 
} 
+3

sieht aus wie dies eine gute Chance für das Debuggen des Codes sein kann ... –

+0

[Break-Anweisungen in Java] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html) – CubeJockey

+2

So ... willst du wissen was eine Schleife ist? Und was macht die 'Break'-Anweisung? Beide sind leicht erforscht und getestet. Inwiefern verhält sich dieser Code anders als erwartet? – David

Antwort

1

Lassen Sie sich diese brechen, mit der ersten for Schleife Start:

for(i=1; i<= 5;i++) 

Die Zuweisungsanweisung, i=1, heißt es lediglich, dass i-1 gleich ist. Die bedingte Anweisung i<=5 gibt an, dass die Schleife so lange ausgeführt werden soll, wie i kleiner oder gleich 5 ist. Diese Anweisung wird vor jedem Ausführen der Schleife überprüft. Die letzte Anweisung dort, i++, besagt, dass i nach jeder Ausführung der Schleife um 1 erhöht wird.

Wenn es hilft, könnte dies auch die folgende Art und Weise dargestellt werden:

int i = 1; 
if (i<=5) { 
    //execute code here 
    i = i+1; 
    //return to if statement 
} 

(Natürlich kann es eigentlich nicht auf diese Weise codiert werden, da es keine GOTO-Befehl in Java ist der einzig gangbare Weg zu. ersetzen würde eine for Schleife mit einem einfachen if Anweisungsblock sein, den obigen Codeabschnitt innerhalb eines rekursiven Verfahrens zu schreiben, was sinnlos ist, da rekursive Verfahren komplizierter sind, als Schleife zu verwenden.)

Nun, was die break Aussage does ist es die innerste Schleife beendet. Betrachten Sie dieses Beispiel (der Einfachheit halber ist dies nur Pseudo-Code mit Schleifennamen ohne tatsächliche for Aussagen, stellen Sie sich vor jeder eine for Schleife):

LOOP1 { 
    LOOP2 { 
     LOOP3 { 
      // some code here 
      break; 
     } 
    } 
} 

Wenn die break Anweisung erreicht ist, LOOP3 beendet wird, wenn es auch Sonst wäre ich weitergelaufen. Beachten Sie, dass dies NUR LOOP3 beendet; Die anderen beiden Schleifen werden weiterhin ausgeführt.

Es ist jedoch möglich, eine äußere Schleife mit break zu beenden. Wenn der Code wie folgt geschrieben:

LOOP1 { 
    LOOP2 { 
     LOOP3 { 
      // some code here 
      break LOOP1; 
     } 
    } 
} 

LOOP1 würde beendet werden; Dies würde auch zur Beendigung der anderen beiden Schleifen führen, da sie innerhalb von LOOP1 verschachtelt sind.

Verwandte Themen