Entendo que, ao usar o .next()
dentro do for
ele já usou nesse momento o index zero contendo a
, e dentro do laço for
ele usa novamente o .next()
e assim consome o index 1, imprimindo b
.
Entendo que, ao usar o .next()
dentro do for
ele já usou nesse momento o index zero contendo a
, e dentro do laço for
ele usa novamente o .next()
e assim consome o index 1, imprimindo b
.
Olá Derisvaldo,
Neste exercício existe um ponto de atenção que o i.next()
que está na definição do for
. Quando entramos no for
a primeira vez, o iterator está apontando para a letra a e quando fazemos o next()
, este a é devolvido e o iterador passa a apontar para a letra b.
Aí quando a primeira iteração do for
termina, fazemos o incremento que é a instrução i.next()
. Isso significa que a letra b será devolvida mas não fazemos nada com ela. Em seguida o iterador estará apontando para o fim da lista já que não temos mais nenhum elemento nela. Então verificamos a condição do for
que é o hasNext()
. Como o iterador já está apontando para o final da lista, então o for
é encerrado e não imprimimos mais nenhuma letra.
Perceba que o problema todo acontece porque movemos o iterador dentro do for
mas também movemos ele quando fazemos o incremento do próprio for
. Isso significa que o iterador se move duas vezes a cada iteração do for. O efeito disso se tivéssemos mais letras na lista seria que imprimiríamos sempre uma letra sim e outra letra não.