Java читает каждую вторую строку в текстовом файле - PullRequest
0 голосов
/ 08 ноября 2019

Я написал некоторый код, который считывает сканер из текстового файла на моем компьютере, но при запуске кода сканер считывает только все остальные числа, которые есть в текстовом файле. Любые идеи?

Примечание. Для файла grades.txt это файл

"3 8 1 13 18 15 7 17 1 14"

    import java.util.*;
    import java.io.*;

    public class GradeAverage
    {
        public static void main(String[] args) throws IOException
        {
                Scanner scanner = new Scanner(new File("C:\\Users\\Media - Graphics\\Documents\\SCHOOL\\NCVPS\\GradeAverage\\grades.txt"));
                int i = 0;
                int sum = 0;
                int lineNumber = 0;
                int average = 0;
                while(scanner.hasNextInt()){
                System.out.println(scanner.nextInt());
                sum = sum+scanner.nextInt();
                lineNumber++;
                    }
                    System.out.println("The sum of the numbers: "+sum);
                    System.out.println("The number of scores: "+lineNumber);
                    average = sum/lineNumber;
                    System.out.println("The average of the numbers: "+average);
        }        
    }

Вот что он выводит:

3

1

18

7

1

Сумма чисел: 67

количество оценок: 5

Среднее число: 13

1 Ответ

2 голосов
/ 08 ноября 2019

Каждый раз, когда вы звоните nextInt() в вашем цикле, вы потребляете один int. Поэтому, когда вы делаете

System.out.println(scanner.nextInt());
sum = sum+scanner.nextInt();

, вы потребляете два int (s). Вы хотите что-то вроде

int t = scanner.nextInt();
System.out.println(t);
sum += t;

Также ваш average в настоящее время int (я бы ожидал float или double).

double average = sum/(double)lineNumber;

Не забудьте удалить int average = 0; (или изменить это и average соответственно).

...