[RESOLVIDO] For each acusando "IndexOutOfBounds" quando o For convencional funciona normalmente

Boa tarde pessoal!

Estava fazendo uns testes e me deparei com uma questão que não entendi.
Em um trecho de código onde o “For convencional” funciona normalmente,
ao utilizar o “For Each loop”, recebo um “IndexOutOfBounds Exception”.
Se o “For Each” funciona “automaticamente”, ele não deveria saber quantas vezes deve iterar?

Segue o código:


public class TestaArrayNaoStatic{

  public int[] meuArray;
  
  public void inicializaArray(int... numeros){
  
    meuArray = numeros;
  
  }
  
  public static void main(String[] args){
  
    TestaArrayNaoStatic teste = new TestaArrayNaoStatic();
    
    teste.inicializaArray(1,2,3);
    
    for(int i=0;i<3;i++){
    
      System.out.println(teste.meuArray[i]);
    
    }

    
//    for(int n : teste.meuArray){            //Está acusando erro em tempo de execução: IndexOutOfBounds
//    
//    System.out.println(teste.meuArray[n]);
//    
//    }
  
  }

}

Vc tem um erro de LOGICA, e nao de sintaxe

Dentro do forEach, cada variavel n vai corresponder ao VALOR de cada posicao do vetor… e nao a um indice (0,1,2,3,etc…)

Como seus valores sao 1, 2 3, na terceira iteracao ele vai tentar acessar a posicao 3 (que é a QUARTA posicao por Java ser zero-index based) e ai vc ganha sua exceção bonitinha =D

Se seus valores fossem 7, 8 e 9… logo na primera iteração vc ia levar pau.

No for each não tens o indice da posição array mas o próprio valor nessa posição.

O que tu queres é simplesmente:

for(int n : teste.meuArray){          
        System.out.println(n);
}  

[quote=pmlm]No for each não tens o indice da posição array mas o próprio valor nessa posição.

O que tu queres é simplesmente:

for(int n : teste.meuArray){ System.out.println(n); } [/quote]

e isso mesmo, quando voce faz um for each o valor que fica a esqueda indica que ele e um dos muitos que estao dentro de um array, dai vc pode apenas imprimi-lo… senao nao teria significado tem o
FOR(int N : teste.meuArray )

Faloww

Boa noite pessoal!

Agradeço a todos pela ajuda. Agora está claro que o erro era de pensamento, de lógica.

Valeu!