statement - Java: Inicializa múltiples variables en for loop init?
java for arraylist (3)
Quiero tener dos variables de bucle de diferentes tipos. ¿Hay alguna manera de hacer funcionar esto?
@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();
}
La inicialización de una instrucción for
sigue las reglas para las declaraciones de variables locales .
Esto sería legal (si es tonto):
for (int a = 0, b[] = { 1 }, c[][] = { { 1 }, { 2 } }; a < 10; a++) {
// something
}
Pero tratar de declarar los distintos tipos de Node
e int
que desee no es legal para las declaraciones de variables locales.
Puedes limitar el alcance de las variables adicionales dentro de los métodos usando un bloque como este:
{
int n = 0;
for (Object o = new Object();/* expr */;/* expr */) {
// do something
}
}
Esto garantiza que no vuelva a utilizar accidentalmente la variable en ningún otro lugar del método.
No te puede gustar esto O utiliza múltiples variables del mismo tipo for(Object var1 = null, var2 = null; ...)
o extrae la otra variable y la declara antes del bucle for.
Simplemente mueva las declaraciones de variables ( Node<T> current
, int currentIndex
) fuera del bucle y debería funcionar. Algo como esto
int currentIndex;
Node<T> current;
for (current = first; current != null; current = current.next, currentIndex++) {
o tal vez incluso
int currentIndex;
for (Node<T> current = first; current != null; current = current.next, currentIndex++) {