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?