Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Duda ciclo

Hola de que tal

tengo otro ciclo que no consigo entender

int [] a = { 1, 2, 3, 4 };
for(int i=1; i<a.length;i++){
a[i-1]= a[i];
}
System.out.print(a[0]);

El resultado de este ciclo es dos, pero no consigo entender porque.

se supone que el for aumentará la variable i hasta 3, y luego a[i-1]= a[i] me daría 2.

lo que no entiendo es que al imprimir a[0] no me de 1

un saludo

Rubén

septiembre 1, 2015 | Unregistered CommenterRubén

Hola, cuando no entiendas un ciclo o no veas bien que es lo que hace, lo mejor es realizar la simulación del bucle en un papel, de esa manera te das cuenta de lo que va pasando. Hagamoslo:
Inicialmente tenemos que:
a={1 ,2 ,3 ,4 }

Primera iteraccion:
i=1.
a[0]=a[1] es decir, en la posicion 0(valor 1) ponemos el valor de a[1](valor 2)
a={2 , 2 , 3, 4}

Segunda iteración:
i=2
a[1]=a[2] es decir, en la posición 1(valor 2) ponemos el valor de a[2](valor 3)
a={2,3,3,4}

Y finalmente, tercera iteración:
i=3
a[2]=a[3] es decir, en la posicion 2(valor 3) ponemos el valor de a[3](valor 4)
a={2,3,4,4}

Por lo tanto, al terminar el bucle, en la primera posición del array(a[0]) lo que hay es un 2, el 1 que había inicialmente fue sustituido en la primera iteracion al sustituir el valor de a[0] por el valor de a[1] , y por eso te imprime un 2, en lugar de un 1.

Y eso, cuando no veas que pasa en un bucle, coge un papel y un boli y haz esto.... Siempre que no sean mas de 5 o 6 iteraciones, si fueran mas, haz las 6 o 7 primeras y deberías darte cuenta de lo que debería pasar con las restantes.

Bueno si no entiendes algo comenta. Un saludo!

septiembre 1, 2015 | Registered Commenterloderain

Muchísimas gracias, seguiré tu consejo y usaré lápiz y papel, la verdad es que así está todo mucho más claro

Un saludo y gracias de nuevo

septiembre 2, 2015 | Unregistered CommenterRubén