while statement loop for español enhanced array java for-loop

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++) {