Duvida com o enhanced-for

3 respostas
Meth

int[] i=new int[10]; int x =0; for(int z :i ){ System.out.println(x+" | "+z); x++; }

Eu fiquei sem entender uma coisa;…,na linha que imprime o valor das duas variaveis o valor de x muda,certo…
Mas o do Z nao!!Sei +/- como funciona o for…,toda vez q o codigo acaba ;a condicao booleana estabelecida diz se deve ou nao sair do loop!!
Mas como eh feita a verificacao,se o valor da variavel de controle nao muda???
Se fosse feito o algoritmo abaixo,na linha que faz a saida, o valor de z sempre seria igual ao de x;enquanto nao fosse estabecida a condicao,nao sairia do loop!!
Fiquei muito curioso pra saber como isso acontece!!
A quem responder,fica o meu muito obrigado!!!

int[] i=new int[10]; int x =0; for(int z = 0;z < i.length;z++){ System.out.println(x+" | "+z); x++; }

3 Respostas

M

Rode esse exemplo com a atribuição de valores a Array i…

int[] i = {10,20,30,40,50,60,70,80,90,100};
		int x =0;
		
		for(int z :i) {  
			System.out.println(x+" | "+z);  
			x++;   
		}

O valor de x muda, pois está sendo incrementado dentro do loop (x++), no seu exemplo a variável z só imprimia 0, pois a Array i não tinha nenhum valor atribuído aos elementos do vetor, ou seja, a variável z armazena o valor que está armazenado na Array i (começando pelo índice 0), e a imprime, até que se chegue ao último índice do Array. Portanto, de forma implícita essa sintaxe saberá qdo ela chegar no último índice desse vetor.

Exemplo sem usar For-Each:

for (int y=0; y < i.length; y++) {
			System.out.println(y + " | " + i[y]);
		}

For-Each ou Enhanced For, é uma syntax sugar, ou seja, facilita e torna mais simples a sintaxe, e qdo vc tiver q percorrer um Array é melhor utilizar o For-Each, pois além da sintaxe ser mais simples, você evitará algum possível erro …

Meth
int[] i = {10,20,30,40,50,60,70,80,90,100};  
int x =0;  
  
for(int z :i) {    
    System.out.println(x+" | "+z);    
    x++;     
}
Dxa ver se eu entendi...o z so eh incrementado quando o vetor tiver um elemento preenchido... Mas o que eu queria saber eh o seguinte!! Quando as linhas do loop chegam ao fim,retorna ao inicio e verifica a condicao booleana para ver se repete de novo ou sai!! No exemplo abaixo quando o "i" tiver igual a 50,o programa percebe o "false" e sai!!
for(int i = 0;i < 50;i++)

No exemplo abaixo(pelo que eu entendi do que vc falou,cada posicao com um elemento incrementa..,por isso usei o meu mesmo),nao existe condicao booleana!!
Pelo menos eu nao enxergo ela!!

int[] i = new int[10];  
int x =0;  
  
for(int z :i) {    
    System.out.println(x+" | "+z);    
    x++;     
}

O sono ta batendo....tou ficando um pouco confuso no que eu falo...se ficou dificil de entender manda uma mp q eu edito!!

Ahhhh valeu aew pela forca!!!

Meth

Entendi agora que eu rodei o codigo que vc me mandou!!
Realmente!!

A minha duvida ainda ficou mas eu entendi o que acontece!!A variavel que num for normal iria contar,a ela agora eh a atribuida o valor da variavel!!!
O codigo que vc me mandou vai me ajudar pra`caralho!!Trabalhar com vetor addcionando item por item eh foda!!
Na apostila da Caellum nao fala nesse jeito de add itens ao vetor!!

Valeuuuu meu brother!!!

Criado 15 de setembro de 2010
Ultima resposta 15 de set. de 2010
Respostas 3
Participantes 2