Olá Pedro! Tudo bem?
Pergunta muito interessante!
Retornando ao código que o professor utiliza nesta aula, vemos o seguinte:
Scanner scanner = new Scanner(new File("contas.csv"));
while(scanner.hasNextLine()) {
String linha = scanner.nextLine();
System.out.println(linha);
}
Na estrutura de repetição while
nós sempre temos como parâmetro uma expressão booleana, que é avaliada antes de cada iteração do loop. Enquanto a expressão retornar um valor verdadeiro (True), o loop segue se repetindo. Quando a expressão retornar um valor falso (False), o loop para.
Geralmente nós utilizamos uma expressão que envolve uma variável do tipo int
, de forma que essa variável tem seu valor incrementado a cada iteração do loop, dessa forma:
while(i < 9){
i = i + 1;
System.out.println( i );
}
Mas quando utilizamos essa forma de iterar o laço, definimos um valor fixo que ele terá que obedecer (no exemplo, o laço se repetirá enquanto o valor de i < 9
for verdadeiro).
No caso do nosso Scanner, precisamos que ele continue com as iterações do laço até que não haja mais linhas a serem "escaneadas". E felizmente temos um método específico para isso!
É nesse momento que entra em cena o scanner.hasNextLine()
! Ele nos retorna true enquanto houver uma próxima linha a ser escaneada, nos garantindo assim que teremos a iteração do laço while
enquanto houver uma próxima linha. Quando não houver, ele simplesmente nos retorna um false, encerrando o loop.
Então utilizamos ele dessa forma: while(scanner.hasNextLine())
.
Quanto a dúvida de como nós fazemos um "incremento" para que na próxima iteração do loop a próxima linha seja "escaneada", também recorremos a um método específico para isso... o scanner.nextLine()
. Ele nos garante que a cada iteração do loop nós estaremos sempre indo para a próxima linha. E como nós utilizamos o scanner.hasNextLine()
, garantimos que de fato há uma próxima linha para o scanner, pois caso contrário o loop teria parado sua execução.
Consegui te ajudar com essa resposta?
Se precisar de mais ajuda com esse assunto em específico, é só falar! 😄
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!