Java: Initialiser plusieurs variables dans la boucle for init?
Je veux avoir deux variables de boucle de différents types. Est-il possible de faire ce travail?
@Override
public T get(int index) throws IndexOutOfBoundsException {
//syntax error on first 'int'
for (Node<T> current = first, int currentIndex; current != null;
current = current.next, currentIndex++) {
if (currentIndex == index) {
return current.datum;
}
}
throw new IndexOutOfBoundsException();
}
Qu'est-ce que
Vous devez les accepter une réponse ci-dessous
Et contrairement à C, Java n'a pas l'opérateur virgule: stackoverflow.com/questions/12601596/... , ce qui permettrait à initialiser (mais pas déclarer) deux variables de types différents.
Heiner Pourriez-vous s'il vous plaît marquer l'un des ci-dessous les réponses acceptées?
first
? Il n'est pas déclaré, n'importe où. Est-il un membre de la classe?Vous devez les accepter une réponse ci-dessous
Et contrairement à C, Java n'a pas l'opérateur virgule: stackoverflow.com/questions/12601596/... , ce qui permettrait à initialiser (mais pas déclarer) deux variables de types différents.
Heiner Pourriez-vous s'il vous plaît marquer l'un des ci-dessous les réponses acceptées?
OriginalL'auteur Nick Heiner | 2010-08-22
Vous devez vous connecter pour publier un commentaire.
La l'initialisation d'un
for
déclaration respecte les règles d' les déclarations de variables locales.Ce serait légal (si stupide):
Mais en essayant de déclarer les différentes
Node
etint
types que vous voulez n'est pas légal pour les déclarations de variables locales.Vous pouvez limiter la portée des variables supplémentaires dans les méthodes à l'aide d'un bloc comme ceci:
Cela garantit que vous ne l'avez pas accidentellement réutiliser la variable ailleurs dans la méthode.
que le mieux serait de poser une question distincte.
peut-être pour des raisons historiques, parce que Java a été modélisé d'après C++... voir ce post: stackoverflow.com/questions/2687392/...
+1 pour l'utilisation d'un bloc, je les utilise beaucoup, encore mieux que de faire des erreurs stupides
OriginalL'auteur McDowell
Vous ne pouvez pas comme ça. Soit vous utilisez plusieurs variables du même type
for(Object var1 = null, var2 = null; ...)
ou vous avez extrait l'autre variable et de le déclarer avant la boucle for.OriginalL'auteur Colin Hebert
Il suffit de déplacer les déclarations de variables (
Node<T> current
,int currentIndex
) en dehors de la boucle et cela devrait fonctionner. Quelque chose comme ceciou peut-être même
eh bien, je n'étais pas exercer dans le manuel de la compilation de code 🙂 je voulais juste donner l'idée.
Juste pour clarifier: currentIndex doit être initialisé. La première chose que Nikita n'est "currentIndex++", qui, naturellement, amène la question, incrément de quoi? le courant est bien parce que la première utilisation est à mettre en premier.
oui oui oui
Manquant d'initialisation ajoutée par le biais de modifier...
OriginalL'auteur Nikita Rybak
on ne peut pas initialiser les différents types de données dans la boucle for de par leur conception. Je suis juste mettre un petit exemple.
OriginalL'auteur Vishnu Prasanth G