Problema com FOR EACH

Estou aprendendo a utilizar o comando for each porém ao escrever um comando simples com for o programa funciona, ao escrever o mesmo com for each não está funcionando…

o código é o seguinte:

public class main {
public static void main(String[] args) {

	int num[];
	num = new int [3];
	
	num[0]=10;
	num[1]=20;
	num[2]=30;
	
	//for (int n=0; n<num.length;n++) {
	for (int n : num) {
	num[n]=0;    //linha 13 que está dando erro
	System.out.println(num[n]);
	}	
}

}

ao descomentar a linha do for e comentar o for each o programa funciona, o erro apresentado com o for each segue abaixo:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
at main.main(main.java:13)

estou utilizando o eclipse versão 2018-09 (4.9.0)

quando vc faz um foreach vc não tem um “indice”, o n nesse caso serão os proprios numeros 10, 20, 30…

remova essa linha e imprima o valor de n pra vc ver

No For each você passa os valores do objeto que esta do lado direto para o lado esquerdo.
No caso lendo seu trecho de codigo você esta fazendo o seguinte:

num possui os valores 10, 20 e 30.
n recebe os valores de num.
Ao entrar no laço, você tenta acessar o vetor num na posição n, que na primeira vez é 10. Por ser o primeiro valor que n recebe de num, ocorre ArrayIndexOutBoundsException pois seu vetor só possui 3 posições.

1 curtida