Poderia me explicar este código? Confesso que chutei a resposta. -Não entendo porque ele ainda imprime -5 e dá erro!!!
Obrigado!
Poderia me explicar este código? Confesso que chutei a resposta. -Não entendo porque ele ainda imprime -5 e dá erro!!!
Obrigado!
Oi Adauto,
Pra ficar mais claro, vamos fazer o famoso "chinês".
Começamos inicializando o vetor x com 3 posições:
x[vazio, vazio, vazio];
Iniciamos a iteração com x[1]=x.lenght-1
. Isso quer dizer que o vetor x no campo [1]
tem o valor de 2. E a cada iteração, iremos diminuir em 1 o valor de x[1]
(que é a nossa parte de x[1]--
). Portanto, nosso vetor nesse momento está assim:
x[vazio, 2, vazio];
Percebe então que na primeira vez, iremos colocar o valor -5 dentro do vetor no campo x[x[1]]
. Podemos ver que o valor de x[1]
é 2. Logo, iremos inserir na posição 2. Nosso vetor ficará assim agora:
x[vazio, 2, -5];
E printamos o x[1]: 2
.
Na segunda iteração, o nosso x[1] é igual a 1(diminuímos 1 do valor). Portanto, iremos colocar o valor -5 na posição 1 do vetor x. Ficando assim:
x[vazio, -5, -5];
E printamos o x[1]: -5
.
Ja na terceira, diminuímos novamente o valor de x[1]
. Porém podemos ver que ele vale -5! Então o novo valor dele será -6. Ao tentar inserir o -5 no vetor x, não conseguiremos, pois estamos tentando acessar a posição x[-6], na qual não existe, e por isso lança a exception. Perceba que ela mesma diz isso:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -6
Espero que tenha ficado mais claro :)
Legal Silvio, bem explicado, consegui assimilar.