Bom dia.
Eu estava estudando sobre excessões na apostila da caelum (FJ-11), e fiz este exercicio.
publicclassTesteErro2{publicstaticvoidmain(String[]args){System.out.println("inicio do main");try{metodo1();}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("Erro : "+e);}System.out.println("fim do main");}staticvoidmetodo1(){System.out.println("inicio do metodo 1");metodo2();System.out.println("fim do metodo 1");}staticvoidmetodo2(){System.out.println("inicio do metodo 2");int[]array=newint[10];for(inti=0;i<=15;i++){//aqui dara erro pois o array só tem 10 posiçõesarray[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.
staticvoidmetodo2(){System.out.println("inicio do metodo 2");int[]array=newint[10];for(inti=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á.
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
edubranquinho
Puts é verdade ! Tinha me esquecido disso
Obrigado , agora poderei continuar a estudar tranquilo