1
resposta

Next duas vezes

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.

1 resposta

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software