Erro - java.lang.ArrayIndexOutOfBoundsException

5 respostas
claudneto

Pessoa,

Eu tenho esse método:

public boolean adicionarSala (int posicaoNoArranjo, int numeroMaximoDeEstudantes, boolean ehSalaEspecial) {
		if (salas[posicaoNoArranjo] != null || posicaoNoArranjo < 0 || posicaoNoArranjo >= salas.length)

Ei está só a assinatura e o if que invalida a entrada (se a posição no arranjo é inválida ou se já tem uma sala cadastrada nessa posição).

Quando eu rodo a classe de testes:

Escola minhaEscola = new Escola(3);

		System.out.println(" 1. Resposta esperada: 'true' :\t" + minhaEscola.adicionarSala(0, 10, false));
		System.out.println(" 2. Resposta esperada: 'false':\t" + minhaEscola.adicionarSala(0, 10, false));
		System.out.println(" 3. Resposta esperada: 'true' :\t" + minhaEscola.adicionarSala(1, 10, true));
		System.out.println(" 4. Resposta esperada: 'false':\t" + minhaEscola.adicionarSala(3, 10, false));

O teste 4 da o erro:

[color=red]Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at ep1.Escola.adicionarSala(Escola.java:31) at ep1.ExecutaEscola.main(ExecutaEscola.java:11)[/color]

A linha 31 da classe Escola é aquele if que está lá em cima.

Pq da esse erro? No if eu estou colocando as posições inválidas como sendo maior ou igual ao tamanho do arranjo e menores que ZERO. Não é isso?

5 Respostas

romarcio

Pelo erro, parece ser o tamanho do seu array. Acho que vc tentou inserir o item 4 em uma posição que não existe no array.

claudneto

Sim, porém, esse if serve pra testar o valor passado como parâmetro pro índice do array.

if (salas[posicaoNoArranjo] != null || posicaoNoArranjo < 0 || posicaoNoArranjo >= salas.length) return false;

L

Nesta comparação do seu if é que está dando erro…vc tenta buscar uma posição no seu array que não existe… salas[3] não existe… existe somente salas[0],salas[1]e salas[2]…

salas[posicaoNoArranjo] != null
pmlm

No teu if tens de trocar a ordem

posicaoNoArranjo >= salas.length tem de vir antes de salas[posicaoNoArranjo] != null

claudneto

Ahhhhhhh ééé verdade…

Por isso eu adoro esse fórum…

Vlw galera!

Criado 29 de agosto de 2010
Ultima resposta 29 de ago. de 2010
Respostas 5
Participantes 4