Reputation: 19
I'm running a bit of code to read data from a file and then split each line into an array for easier calculating.
However, I've come across a problem where my while loop isn't continuing despite the fact I know there is more data in the text file.
Any help with the problem would be greatly appreciated!
public void test() throws IOException {
FileReader fr = null;
Scanner sc = null;
String file_name = "data.txt";
try {
fr = new FileReader(file_name);
sc = new Scanner(fr);
while(sc.hasNextLine()){
int year = 0;
int month = 0;
double sales_total = 0;
String lines[] = sc.nextLine().split(" ");
for (int i = 0; i < lines.length; i++){
int value = Integer.valueOf(lines[i]);
if (value > 2000) {
year = value;
}
else if (i == 1){
month = value;
}
else {
sales_total += value;
}
System.out.println(sales_total);
}
System.out.println(year + " - " + month + " - "+sales_total);
}
}
catch(IOException e) {
System.out.println(e);
}
finally {
if (fr != null) { fr.close();}
if (sc != null) { sc.close();}
}
}
data.txt
2016 02 5 18 12
2016 12 14 10 3 5 6 8 20 7 10
2016 09 17 3 16 18 19 10 6 10
2016 10 5 3 12 4 12 15
2016 11 18 19 16 2
2017 01 5 5 4 11
2017 02 41 3
2017 06 3 6 18
2017 07 15 18 15 12 9 15
2017 11 9 8 9 4 20 20 19 3
2018 01 19 19 3 10 20 20 18 14 3
2017 12 8 13 18 6
2018 11 10 2 11 8 17 8 6 18 15 1
Upvotes: 1
Views: 89
Reputation: 647
sc.nextLine and sc.hasNextLine are blocking calls by design, so it will remain blocking until new input comes in. see Scanne.hasline() documentation
Could it be that some lines in code are missing CR LF delimiter? I took you sample, opened it with notepad++ and viewed the whitespace (under view->show symbol). and saw the following:
...
2017 11 9 8 9 4 20 20 19 3 CR LF
2018 01 19 19 3 10 20 20 18 14 3 CR LF
2017 12 8 13 18 6 CR LF
2018 11 10 2 11 8 17 8 6 18 15 1
Upvotes: 1