[Resolvido] Erro em exceptions

3 respostas
E
Bom dia. Eu estava estudando sobre excessões na apostila da caelum (FJ-11), e fiz este exercicio.
public class TesteErro2 {

	public static void main(String[] args) {
		System.out.println("inicio do main");
		try {
			metodo1();
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("Erro : " + e);
		}
		System.out.println("fim do main");
	}

	static void metodo1() {
		System.out.println("inicio do metodo 1");
		metodo2();
		System.out.println("fim do metodo 1");
	}

	static void metodo2() {
		System.out.println("inicio do metodo 2");
		int[] array = new int[10];
		for (int i = 0; i <= 15; i++) { //aqui dara erro pois o array só tem 10 posições
			array[i] = i;
			System.out.println(i);
		}

		System.out.println("fim do metodo 2");
	}

}
OK.A intenção era dar erro mesmo. Mas eu fui deixar a linha do for certa, para ver o que acontece.
static void metodo2() {
		System.out.println("inicio do metodo 2");
		int[] array = new int[10];
		for (int i = 0; i <= array.length; i++) {
			array[i] = i;
			System.out.println(i);
		}

		System.out.println("fim do metodo 2");
	}
O problema é que eu continuo recebendo mensagem de erro ! inicio do main inicio do metodo 1 inicio do metodo 2 0 1 2 3 4 5 6 7 8 9 Erro : java.lang.ArrayIndexOutOfBoundsException: 10 fim do main Eu ja concertei a linha que estava errada, porque ainda apresenta o erro ? Agradeço desde já.

3 Respostas

Rodrigo_Sasaki

Porque ela continua incorreta, veja:

Você instanciou um array com 10 posições, mas começamos a contar do 0, certo? portanto 10 posições, são os índices de 0 até 9.

como você itera até o índice 10, que seria a 11ª posição, a exceção é lançada.

Troque o <= por < no seu for

linngallo

Isso, mesmo, amigo. Lembre-se que o array começa no ZERO. Quando ele tenta acessar a posição 10, seria o equivalente a tentar acessar a décima primeira posição, que não existe. Então, dá excessão.

E

Puts é verdade ! Tinha me esquecido disso
Obrigado , agora poderei continuar a estudar tranquilo

Criado 22 de junho de 2012
Ultima resposta 22 de jun. de 2012
Respostas 3
Participantes 3