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
}