Во втором цикле while вы всегда назначаете проанализированную версию переменной mark
для элементов массива marks
.Но вы установили переменную mark
только один раз в своем коде, которая является первой строкой вашего файла.
В любом случае, не читая файл дважды (один раз, чтобы получить количество строк, а затем сохранить фактическую строкусодержимое), вы можете сделать это в одном цикле чтения, используя List
вместо массива.
try (BufferedReader input = new BufferedReader (new FileReader("src/marks.txt"))) {
List<Double> marks = new ArrayList<>();
String line;
while ((line = input.readLine()) != null) {
marks.add(Double.parseDouble(line));
}
System.out.println(marks);
} catch (IOException e) {
e.printStackTrace();
}
Если вы действительно хотите получить эти метки в массив, вы можете инвертировать вышеперечислите в массив следующим образом.
Double[] marksArray = marks.toArray(new Double[marks.size()]);
Также, как я делал в приведенном выше фрагменте кода, лучше использовать попробовать с подходом ресурсов при создании ресурсов AutoCloseable, таких как BufferedReader
или FileReader
.Тогда вам не нужно закрывать их явно в вашем коде.