2016-07-31 7 views
-2

Ich habe für eine Schleife eingerichtet, damit "i" inkrementiert wird, bis "i < 10". Nachdem das for beendet war, fügte ich eine Ausgabeanweisung hinzu, nachdem geschweifte Klammern geschlossen wurden, um den i-Wert anzuzeigen, und es ergab sich 10, während ich dachte, dass der maximale Wert nur 9 hätte sein können. Könnte jemand bitte erklären, was "i" verursacht über dem Maximalwert von 9?Die for-Schleife geht über die Setup-Bedingung hinaus

Vielen Dank, Vlad

public class Recap3 { 
    public static void main(String args[]) { 
    int i; 
    for(i=0;i<10;i++) { 
     System.out.println(i); // this statement lists values from 0 to 9 
    } System.out.println(i); // this statement returns i = 10 
    } 
} 
+3

Wenn 'i' nur bis 9 gehen würde, wäre' i <10' niemals falsch. – shmosel

+0

Die Frage scheint ein wenig künstlich, weil dies nicht der idiomatische/normale Weg ist, die For-Schleife zu benutzen. Der normale Weg ist das Deklarieren und Initialisieren der _Loop-Steuervariable_ ("i") innerhalb der Schleife ("für (int i = 0; i <10; i ++)"). Auf diese Weise wird "i" nur innerhalb der Schleife definiert und Sie müssen sich nicht fragen, welchen Wert es nach der Schleife hat (weil es dort nicht existieren würde). –

+0

danke Mick! wird es merken :) – Vlad

Antwort

0

Nach jeder Iteration der Schleife, Java wird die dritte Term der for Schleife ausführen, i++. Dann prüft es, ob i<10. Wenn dies true ergibt, wird die for-Schleife fortgesetzt, andernfalls wird sie gestoppt.

Dies bedeutet, dass zuerst, Java setzt ich gleich 10, dann überprüft, ob es weniger als 10 ist, und bricht dann.

Die Anweisungen ausgeführt in etwa so aussehen:

System.out.println(i); //i=9 
i++; //i=10 
if(!(i<10)) break;//This breaks out of the loop 
System.out.println(i); //i=10 
+0

danke für die Hilfe! das macht vollkommen Sinn! – Vlad

0

Dies ist kein Fehler. i wird auf 10 erhöht ist das erwartete Verhalten.

nach jeder Iteration der folgenden Schritte ausgeführt:

  1. Führen den die 3.-Anweisung in dem for-Schleife
  2. Dann beurteilen den bedingten Ausdruck in dem zweiten Abschnitt.
  3. Wenn der bedingte Ausdruck als wahr ausgewertet wird, führen Sie den Schleifenkörper aus und kehren Sie zum ersten Schritt zurück. Wenn der bedingte Ausdruck den Wert false hat, setzen Sie die Ausführung nach der Schleife fort.

Also auf der Iteration, wenn i-9 gleich ist, wird i zuerst 10 erhöht, verglichen: i<10. Da i<10 falsch ist, wird die Schleife beendet. Zu diesem Zeitpunkt ist i gleich 10.

+0

danke Moshe! schätze deine Hilfe! – Vlad

0

Die Variable wird vor dem Schleifenkörper geprüft und nach dem Körper inkrementiert.

In den letzten paar Iterationen der Schleife (bei i = 9 beginnend), geschieht folgendes:

  1. Die Bedingung i<10 überprüft wird. 9 ist weniger als 10, so dass die Schleife fortgesetzt wird.
  2. Der Körper der Schleife wird ausgeführt und der Wert 9 wird auf dem Bildschirm ausgegeben.
  3. Die Variable i wird inkrementiert und erhält den Wert 10.
  4. Die Bedingung i<10 ist geprüft. 10 ist nicht weniger als 10, so dass die Schleife austritt.
  5. Die Anweisung außerhalb der Schleife wird ausgeführt. Der Wert von i ist 10, also wird 10 auf den Bildschirm gedruckt.
0

Das zweite System.out.println befindet sich außerhalb der Schleife. Die Schleife geht nur bis 9.Sie können if else-Anweisungen verwenden, um eine hohe Nummer zu erstellen, und dann die System.out.println (highnumber) außerhalb der Schleife haben.

Verwandte Themen