Obtendo loop infinito quando ler o arquivo de método

tavalendo:

Eu estou tentando refatorar meu código, e adicionando métodos, sempre que possível. Quando eu li um arquivo de um método e retornar o resultado do cálculo, o código vai para o consumo de memória extrema, loop infinito.

Meu modificação parece com isso:

import java.util.Scanner;

public class NumberOfLines {
    public static int compute () {
        // read this file
        String theFile = "numbers.txt";

        Scanner fileRead = null;

        if (NumberOfLines.class.getResourceAsStream(theFile) != null) {
            fileRead = new Scanner(NumberOfLines.class.getResourceAsStream(theFile));
        }           
        else {
            System.out.print("The file " + theFile + " was not found");
            System.exit(0);
        }

        System.out.println("Checkpoint: I am stuck here");

        // count number of lines
        int totalLines = 0;
        while(fileRead.hasNextInt()) {
            totalLines++;

        }
        fileRead.close();
        return totalLines;

    }

    public static void main (String[] args) {

        System.out.println("The total number of lines is: " + compute());


    }
}

Se em vez de escrever o método, e colocando o código na principal, então ele funciona. Por que é isso?

EDITAR

Índice de numbers.txt é:

5 
2
7
4
9
1
5
9
69
5
2
5
6
10
23
5
36
5
2
8
9
6

Então eu espero colocar para fora para ser:

O número total de linhas é: 22

Nicholas K:

A razão que você está recebendo preso em um loop infinito é porque você está lendo o arquivo, mas não aumenta os scanners token no loop while. Então, o tempo condição é sempre verdadeira.

while (fileRead.hasNextInt()) {
    totalLines++;
    fileRead.nextInt();  // change made here only
}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=232086&siteId=1
Recomendado
Clasificación