Dúvida questão do Inquisition

2 respostas
diegobrandao

Bom dia a todos,

Estou com outra dúvida, segue abaixo o código:

package inquisition;

public class Test52{
	public static void main(String[] args){
		int []arr = {1,2,3,4};
		for ( int i : arr )
		{
		  System.out.println("i :"+i);
		  System.out.println("antes :"+arr[i]);
		  arr[i] = 0;
		  System.out.println("depois :"+arr[i]);
		  System.out.println();
		}

		for ( int i : arr )
		{
		   System.out.println(i);
		}
	}
}
/*
i :1
antes :2
depois :0

i :0
antes :1
depois :0

i :3
antes :4
depois :0

i :0
antes :0
depois :0

0
0
3
0

The correct answer is D.
This so happens because arr[3] was made 0 during an iteration of the first "for in loop".
So during the final iteration of the first ??for in loop?? , we have 0 instead of 4 in the last index.
It can be seen from the second loop why an ArrayIndexOutOfBoundsException was not thrown at runtime.
The maximum number in the array is 3 which does not exceed the bound of the loop
*/

O que eu não entendi é porque o i é zerado?
arr[i] = 0;
Não estou zerando somente o índice do array?

2 Respostas

Jose_Donizetti

Quando o for executa pela primera vez ele pega o primeiro elemento do array , no qual o index é 0.
No elemento onde o index é 0 o valor é 1 , ai você utiliza esse valor 1 para setar zero ou seja index 1
é o segundo elemento do array…nesse momento o array ficaria assim [1,0,3,4]…por isso na outra iteração
o i está zerado.

diegobrandao

Entendi obrigado…
Acabei viajando em outra coisa… A questão é simples… eu que acabei me perdendo…
Valew

Criado 21 de outubro de 2008
Ultima resposta 21 de out. de 2008
Respostas 2
Participantes 2