Duvida for echo & array

3 respostas
J

depois de varios Debug no eclipse mesmo assim não consegui entender esse código.
cade fez que roda o primeiro loop a variável int i deve ter o mesmo valor do array consecutivo???
se apagar a linha arr[i]=0; e dar um System.out.println(i); a saida é 1234, da forma que esta dando 0030.

int []arr = {1,2,3,4}; for ( int i : arr ) { arr[i] = 0; } for ( int i : arr ) { System.out.println(i); }

alguém pode explicar o que esta acontecendo???

3 Respostas

rodrigo_gomes

Ola,

Acho que vc nao entendeu o funcionamento do for each… Em ambos os casos aih, a variavel “i” nao eh um contador/controlador de loop.

O comportamento que vc descreveu eh exatamente o esperado.

No for each, esse i que vc esta declarando eh uma variavel com escopo local ao for, que ira receber o conteudo de cada elemento do array (e nao o contador).
Inicie o array com outros valores, vc vai perceber a diferença.

[]'s

Rapapel

O que esta acontecendo é o seguinte:

array com os valores 1, 2, 3 e 4, mas as posições deles no array são 0, 1, 2 e 3

começa o for
i vai receber 1 porque no for each cada vez que há um loop a variavel recebe o proximo elemento do array/coleção, então o i vai receber o valor da primeira posição, depois o valor da segunda posição, etc…

começa o for
i = 1
//array da posição 1(segundo elemento) vai receber 0
array[1] = 0
//1ª iteração array = 1, 0, 3, 4

i = 0 // por que ele recebera o segundo elemento e você colocou o valor dele como 0 na primeira iteração
//array posição 0 (primeiro elemento) vai receber 0
array[0] = 0
//2ª iteraçao array = 0, 0, 3, 4

i = 3 // 3 é o valor do terceiro elemento
//array da posição 3(quarto elemento) vai receber 0
array[3] = 0
3ª iteração array = 0, 0, 3, 0

i = 0 porque ele recebera o valor do 4º elemento que na iteração anterior foi definido como 0
//array da posição 0(primeiro elemento) vai receber 0
array[0] = 0
//4ª iteração array = 0, 0, 3, 0

depois ele imprime.

Espero ter ajudado.
FUI

J

Ótimo Rapapel, valeu…

Criado 27 de abril de 2008
Ultima resposta 27 de abr. de 2008
Respostas 3
Participantes 3