Erro ar compilar - java.lang.ArrayIndexOutOfBoundsException:
Quando tento rodar esse código:
Eu recebo o seguinte erro:
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] ); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 19999
at Main.main(Main.java:29)
Java Result: 1
O que estou errando?Tpiardi
Curtidas 0
Respostas
William Siqueira
23/05/2011
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:
Então, você pode acessar numeros na posição 0, 1 e 2. Quando tenta acessar a posição 3, esse erro acontece:
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..
int numeros[] = new int[3];
numeros[0] = 666; numeros[1] = 69; numeros[2] = 24; //Erro na linha abaixo!!!!!1111!11!1 numeros[3] = 999;
GOSTEI 0
Tpiardi
23/05/2011
muito obrigado. Deu certo agora :)
GOSTEI 0
William Siqueira
23/05/2011
[quote="tpiardi"]muito obrigado. Deu certo agora :)
aeee!!!! :amigos:
E o que você fez? Aumentou o tamanho do vetor?
[]'s
GOSTEI 0
Carlos Heuberger
23/05/2011
[quote="tpiardi"][...]
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!
[[]]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 19999
at Main.main(Main.java:29)
Java Result: 1
O que estou errando? GOSTEI 0
Douglas Eric
23/05/2011
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)
GOSTEI 0
Tpiardi
23/05/2011
Valeu pessoal,
Eu aumentei o vetor em 1 e tudo funcionou
Eu sabia que era na linha 29 mas não sabia o que.
GOSTEI 0