int v = 0;
for (v; v<2; v++) {
...
}
Warum ist das in Java nicht erlaubt?
Warum müssen wir die Variable v
in der for-Schleifeninitialisierung deklarieren ? Ich weiß, dass es keine Aussage ist, wenn ich es so mache, aber warum erlaubt Java das oben nicht?
for(;;)
v
ist nicht erlaubt, weil es keine Aussage ist: Es ist der gleiche Grund, warum Siev;
anderswo nicht alleine schreiben können.for
Schleife.Antworten:
Wenn
v
vor der Schleife deklariert wird, sollten Sie den ersten Teil der for-Anweisung leer lassen:Es hat keine Bedeutung, nur zu schreiben
v;
.quelle
Ihre Schleifendeklaration ist gültig, wenn Sie das Fremde
v
in der Deklaration entfernen (vorausgesetzt, esv
wurde zuvor deklariert):Ändern Sie es in
for(; v < 2; v++)
Alle drei Modifikatoren in der traditionellen
for
Schleife sind in Java optional.Alternative Beispiele:
Unten ist das gleiche wie eine
while (true)
Schleife:Hinzufügen zusätzlicher Schritte:
Hinzufügen zusätzlicher Bedingungen zum Beenden der Schleife:
Deklarieren mehrerer Variablen desselben Typs:
Und natürlich können Sie diese beliebig kombinieren und ganz auslassen, ohne die gewünschten zu verwenden.
quelle
Laut dem Java-Dokument
Bedeutet, dass Sie eine
for
Schleife erstellen und einige von 3 Ausdrücken leer lassen können. Eine der Optionen ist deklarierenint v
vor Schleife:quelle
Sie müssen keine Variable in der deklarieren
ForInit
.Wie andere bereits betont haben, können Sie das einfach weglassen
ForInit
. Sie können dort aber auch eine Liste von Anweisungsausdrücken verwenden.Sie können beispielsweise neue Klasseninstanzen erstellen, Methoden aufrufen und Variablen zuweisen / inkrementieren / dekrementieren:
(Dieses Beispiel ist unsinnig, aber legal)
Sie können diese Anweisungsausdrücke jedoch nicht mit lokalen Variablendeklarationen mischen.
quelle
Sie benötigen es nicht für eine erweiterte
for
Schleife.quelle
int w = 0;
im Fernsehen;
für (v; v <2; v ++) {
} Sie haben v vor der Schleife deklariert , aber erneut ohne Initialisierung verwendet.
Wenn Sie w verwenden, das bereits zuvor deklariert und initialisiert wurde, treten keine Probleme auf.
für (; w <2; w ++) {
}}
quelle