Como pegar tamanho de um array ?[RESOLVIDO]

3 respostas
airtonarantes

Pessoal, estou com o seguinte problema:

criei dois arrays assim:

int[] array1 = {0,1,2,3,4,5};
int[] array2 = new int[5];

dentro de uma instrução for, desse jeito abaixo, eu consigo fazer a manipulação certinha do array

for(int i = 0 ; i <= array1.length ; i++)
{
          // Instruções
}

Mas eu não consigo pegar o tamanho de um array e armazenar numa variável, por exemplo

int tamanho = array1.length;
System.out.printf("Tamanho do array1 = %d",tamanho)
O programa compila direitinho mas quando é executado ocorre o seguinte problema:
public class AppTest {
    public static void main(String[] args) {
        
        int tamanho;       
        int[] array1 = {10,11,12,13,14,15,16,17,18,19};
        
        tamanho = array1.length;
        
        for(int i = 0 ; i <= array1.length ; i++)
        {
            System.out.printf("Current number: %d\n", array1[i]);
        }
        
        System.out.printf("Tamanho do array1 : %d",tamanho);
    }

}

Resultado da execução:

Current number: 10 Current number: 11 Current number: 12 Current number: 13 Current number: 14 Current number: 15 Current number: 16 Current number: 17 Current number: 18 Current number: 19 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at AppTest.main(AppTest.java:11) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

Nao sei porque dentro da instrução for funciona, mas atribuir a uma variavel de mesmo tipo nao funciona, por que isso?

3 Respostas

renan_

amigo , o certo é fazer:

for(int i=0; i < array.length; i++){}

Veja, voce está usando <= …
com isso na ultima iteracao ele vai tentar acessar a posicao array[5] que nao existe! beleza?
um array de 5 posicoes tem indices 0,1,2,3,4 …

Att,

Renan

dlt

faca como o renan_ falou.

A excecao ArrayIndexOutOfBoundsException eh lancada toda vez que eh tentando acessar uma posicao do array que ultrapassa os limites do array.

airtonarantes

Veja, voce está usando <= …
com isso na ultima iteracao ele vai tentar acessar a posicao array[5] que nao existe! beleza?
um array de 5 posicoes tem indices 0,1,2,3,4 …

Valeu, eu pensei que ele tava passando pelo for tranquilo e tava dando erro na última instrução. Por isso que ele tava acusando o estouro de limite e eu me perguntando que limite era esse e só concentrando na última instrução.

Criado 26 de julho de 2008
Ultima resposta 26 de jul. de 2008
Respostas 3
Participantes 3