Почему моя программа не читает первое целое число в текстовом файле? - PullRequest
0 голосов
/ 30 сентября 2019

Я выполнил метод до такой степени, что нашел txt-файл с оценками, прочитал их, положил их в массив, а затем вывел нужные нам значения. По некоторым причинам, это не все целые числа. например, если я введу:

6, 87, 23, 90

, он будет читать только последние три.

87, 23 и 90

//reads the data from the file
private static int[] readExamScores(String  userFile) throws FileNotFoundException{
    File inputFile = new File(userFile);
    Scanner stats = new Scanner(inputFile);

    try{
        int scores[] = new int[stats.nextInt()];
        int i = 0;
        while (stats.hasNext()){
            scores[i] = stats.nextInt();
            i++;
        }
        System.out.println("\n" + "There are " + (i) + " scores. \n");
        Arrays.sort(scores);
        return scores;
    }
    finally {
        stats.close();
    }
}

1 Ответ

2 голосов
/ 30 сентября 2019

Поскольку ваш индекс уже перемещен на 1 из-за инициализации и приращения одновременно, например, stats.nextInt ()

Я предлагаю исправить с помощью arraylist, так как сканер «потребляет» то, что он возвращает, если вы подсчитываете токены встрока или читать ее.

List<Integer> scores = new ArrayList<Integer>()
       int i = 0;
        while (stats.hasNext()){
            scores.add(stats.nextInt());
            i++;
        }
...