int v = 0;
for (v; v<2; v++) {
...
}
Pourquoi cela n'est-il pas autorisé en Java?
Pourquoi devons-nous déclarer une variable v
dans l'initialisation de la boucle for? Je sais que ce n'est pas une déclaration si je le fais comme ça, mais pourquoi Java n'autorise-t-il pas ce qui précède?
for(;;)
v
n'est pas autorisé car ce n'est pas une déclaration: c'est la même raison pour laquelle vous ne pouvez pas écrirev;
par lui-même ailleurs.for
boucle améliorée .Réponses:
Si
v
est déclaré avant la boucle, vous devez laisser la première partie de l'instruction for vide:Il n'y a aucun sens à simplement écrire
v;
.la source
Votre déclaration de boucle est valide si vous supprimez les étrangers
v
dans la déclaration (en supposant qu'elle av
été déclarée au préalable):Changez-le en
for(; v < 2; v++)
Les trois modificateurs de la
for
boucle traditionnelle sont facultatifs en Java.Exemples d'alternatives:
Ci-dessous, c'est la même chose qu'une
while (true)
boucle:Ajout d'incréments supplémentaires:
Ajout de conditions supplémentaires pour terminer la boucle:
Déclaration de plusieurs variables de même type:
Et évidemment, vous pouvez mélanger et assortir n'importe lequel de ces éléments comme vous le souhaitez, en laissant de côté ceux que vous voulez.
la source
Selon le doc java
Signifie que vous pouvez créer une
for
boucle et laisser une partie de 3 expr vide. L'une des options est de déclarerint v
avant la boucle:la source
Vous n'avez pas besoin de déclarer une variable dans le
ForInit
.Comme d'autres l'ont souligné, vous pouvez simplement omettre le
ForInit
; mais vous pouvez également y utiliser une liste d'expressions d'instructions.Par exemple, vous pouvez créer de nouvelles instances de classe, appeler des méthodes et affecter / incrémenter / décrémenter des variables:
(Cet exemple est absurde, mais légal)
Cependant, vous ne pouvez pas mélanger ces expressions d'instruction avec des déclarations de variables locales.
la source
Vous n'en avez pas besoin pour une
for
boucle améliorée .la source
int w = 0;
à la TV;
pour (v; v <2; v ++) {
} vous avez déclaré v avant la boucle mais vous l'avez de nouveau utilisé sans aucune initialisation.
si vous utilisez w qui est déjà déclaré et initialisé auparavant, il n'y aura pas de problèmes.Comme ci-dessous,
pour (; w <2; w ++) {
}
la source