File scanner only reading last number in file

Tags: ,



Here is the code:

Scanner fileRead = new Scanner(file);

        while (fileRead.hasNext()) {
            score = (fileRead.nextInt());
        } 

        if (score >= 90) {
            gradeA++; 
            scores++;
        }   else if (score >=80) {
            gradeB++; 
            scores++;
        }   else if (score >= 70) {
            gradeC++; 
            scores++;
        }   else if (score >= 60) {
            gradeD++; 
            scores++;
        }   else if (score >= 50) {
            gradeF++;
            scores++;
        }   else if (score >100 || score <0) {
            uCount++; 
        }   

I’m supposed to be figuring out the average of scores, while counting how many are in each letter grade. The problem is that it only reads the last number instead of ~80 different numbers.

Answer

Your if-else logic doesn’t get executed until the while loop ends and the entire file has been processed. Meaning, only the last int will be stored into score.

Moving the closing bracket of the while loop should fix that problem



Source: stackoverflow