Poderia me explicar este código? Confesso que chutei a resposta. -Não entendo porque ele ainda imprime -5 e dá erro!!!
Obrigado!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.