2016-05-05 7 views
-10

Code folgend Ich schreibe in Innen verwendet werden:warum für Schleifenvariable Außen kann nicht für Schleife

int j =0; 
for(j=0; j< 10;j++){ 
    System.out.println("Printing outer for loop :" +j); 
    for(j; j < 8; j++) 
    { 
    System.out.println("Printing inner for loop" + j); 
    } 
} 

Eclipse-mir zeigen folgende Fehlermeldung:

Syntax error on token "j", ++ expected after this token 

Ich verstehe nicht, den Grund hinter. Jede Erklärung wäre willkommen. Dank

+3

Was erwarten Sie 'j;' zu tun? Wenn Sie keinen 'j' einen Initialwert zuweisen wollen, schreiben Sie einfach' for (; j <8; j ++) ' – Eran

+3

Grund ist, dass Sie eine ungültige For-Schleifensyntax haben, für (j; j < 8; j ++) 'ist keine gültige for-Schleife. –

+0

Ich habe es. Danke für die Abstimmungen;) –

Antwort

2

Wie in JLS definiert, der ersten „Teil“ der for Schleife Erklärung, ForInit, ist ein list of statement expressions or a local variable declaration; j ist kein Anweisungsausdruck (eine Zuweisung; ein Pre-/Post-Inkrement/Dekrement; ein Methodenaufruf; eine neue Klasseninitialisierung) oder eine lokale Variablendeklaration, also eine ungültige Syntax.

Je nachdem, was Sie versuchen zu tun, können Sie es einfach weglassen:

for (; j < 8; j++) 

Beachten Sie, dass alle drei „Teile“ des for Schleife optional sind: zum Beispiel, das ist in Ordnung:

for (;;) { 
} 

(Es ist nur eine Endlosschleife)

0

Schleifen sind nicht wie eine Funktion isoliert.

2

j; ist keine gültige Anweisung, weshalb Ihre innere Schleife nicht kompiliert wird. Sie brauchen nicht in eine Erklärung zu setzen, können Sie nur den „ersten Teil“ leer in der inneren Schleife verlassen:

int j =0; 
for(j=0; j< 10;j++){ 
    System.out.println("Printing outer for loop :" +j); 
    for(; j < 8; j++) 
    { 
     System.out.println("Printing inner for loop" + j); 
    } 
} 
Verwandte Themen