Erro ar compilar - java.lang.ArrayIndexOutOfBoundsException:

23/05/2011

0

Quando tento rodar esse código:

public class Main {
    
    public static void main(String args[])  
    {  
        //Declara vetores de teste
            int ord1[], ord2[], ord3[], ord4[], ord5[], ord6[], ord7[], ord8[], ord9[], ord10[];
	    int inv1[], inv2[], inv3[], inv4[], inv5[], inv6[], inv7[], inv8[], inv9[], inv10[];
	    int ale1[], ale2[], ale3[], ale4[], ale5[], ale6[], ale7[], ale8[], ale9[], ale10[];
	    
	    //Reservar espaço de memória e definir o tamanho
	    ord1 = new int[19999];  ord2 = new int[39999];  ord3 = new int[59999]; 
	    ord4 = new int[79999];  ord5 = new int[99999];  ord6 = new int[119999];
	    ord7 = new int[139999]; ord8 = new int[159999]; ord9 = new int[179999];
	    ord10 = new int[199999];
	    inv1 = new int[19999];  inv2 = new int[39999];  inv3 = new int[59999]; 
	    inv4 = new int[79999];  inv5 = new int[99999];  inv6 = new int[119999];
	    inv7 = new int[139999]; inv8 = new int[159999]; inv9 = new int[179999];
	    inv10 = new int[199999];
	    ale1 = new int[19999];  ale2 = new int[39999];  ale3 = new int[59999]; 
	    ale4 = new int[79999];  ale5 = new int[99999];  ale6 = new int[119999];
	    ale7 = new int[139999]; ale8 = new int[159999]; ale9 = new int[179999];
	    ale10 = new int[199999];
        
	    for (int i = 0 ; i <= 19999 ; i++ ){
	        ord1[i] = i;
	        inv1[i] = 19999-i;
	        ale1[i] = (int) (Math.random() * 19999);
	    }
	  
        
       System.out.println("Ord1[1]="+ord1[1]+" ord1[10000]="+ord1[10000]+" ord1[19999]="+ord1[19999] );  
    }  
} 
Eu recebo o seguinte erro:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 19999 at Main.main(Main.java:29) Java Result: 1
O que estou errando?
Tpiardi

Tpiardi

Responder

Posts

23/05/2011

William Siqueira

Oi, você está ultrapassando o tamanho de um vetor. Abaixo um exemplo das circunstâncias que esse erro ocorre. Primeiro você tem um vetor de três posições:
int numeros[] = new int[3];
Então, você pode acessar numeros na posição 0, 1 e 2. Quando tenta acessar a posição 3, esse erro acontece:
numeros[0] = 666;
numeros[1] = 69;
numeros[2] = 24;
//Erro na linha abaixo!!!!!1111!11!1
numeros[3] = 999;
Agora tenta ver a linha que deu esse erro com o stack trace (aquele monte de texto que acompanha o erro) e veja o vetor que é que está ultrapassando o tamanho e tome alguma providência, como aumentar o tamanho dele ou melhorar a lógica... Ou poste o stack trace também..
Responder

23/05/2011

Tpiardi

muito obrigado. Deu certo agora :)
Responder

23/05/2011

William Siqueira

[quote="tpiardi"]muito obrigado. Deu certo agora :)
aeee!!!! :amigos: E o que você fez? Aumentou o tamanho do vetor? []'s
Responder

24/05/2011

Carlos Heuberger

[quote="tpiardi"][...]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 19999 at Main.main(Main.java:29) Java Result: 1
O que estou errando?
para a próxima vez: - "ArrayIndexOutOfBoundsException" - índice fora dos limites - "19999" - o valor em questão - "at Main.main" - ocorreu no método "main" da classe "Main" - "(Main.java:29)" - ocorreu na linha 29 do arquivo "Main.java" essa última informação é a que mais ajuda! [[]]
Responder

24/05/2011

Douglas Eric

E só uma correção: Isso não é um erro de compilação E sim, um erro em tempo de execução. (só postei isso pq eu queria fornecer alguma informação mas ja tinham respondido tudo)
Responder

24/05/2011

Tpiardi

Valeu pessoal, Eu aumentei o vetor em 1 e tudo funcionou Eu sabia que era na linha 29 mas não sabia o que.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar