1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java] Método hasNext()

Discussão em 'Programação' iniciada por jamo1, 28 de Fevereiro de 2009. (Respostas: 2; Visualizações: 2340)

  1. Boas. Estou a fazer um programa que consiste em dois métodos, um que tem como objectivo a selecção de palavras iniciadas por uma dada letra e o retorno do número de vezes que essas palavras ocorrem no texto e outro em que se tem que contabilizar o número de vezes que uma letra ocorre nas palavras de todo o texto. Visto que recebo um ficheiro de texto, decidi colocar todas as palavras num array de Strings, mas para saber o tamanho deste decidi recorrer ao seguinte método:
    Código:
    private int quantasPalavras(File ficheiro) throws IOException {
    Scanner ficheiroDado = new Scanner(ficheiro);
    int numeroPalavras = 0;
     
    while (ficheiroDado.hasNext()) 
    numeroPalavras ++;
     
    return numeroPalavras;
    }
    Ao tentar correr o programa, quando este utiliza o método acima vai se dar um ciclo infinito. As minhas dúvidas são as seguintes: porque é que vai ocorrer um ciclo infinito e porque é que quando eu coloco um System.out.println(ficheiroDado.next()) dentro do while o ciclo deixa de ser infinito.
     
    Última edição pelo moderador: 28 de Fevereiro de 2009
  2. AliFromCairo

    AliFromCairo Power Member

    O método hasNext não consome nenhum token, o que faz com que a condição seja sempre verdadeira no teu while. Por outro lado, ao utilizares o método next, estás a consumir um token, o que faz com que eventualmente consumas todos os tokens, e o método hasNext não devolva true.
     
  3. Isso explica muita coisa. Muito obrigado!
     

Partilhar esta Página