Я пишу программу, которая читает из файла. Каждая строка в файле содержит информацию о студенте. Каждый студент представлен объектом из класса «Студент». Класс Student
имеет метод getName
, который возвращает имя студента. Метод, который проходит через файл, возвращает и ArrayList, содержащий объекты студента. Моя проблема в том, что каждый раз, когда я использую цикл for для доступа к ArrayList и получаю имя каждого ученика, то, что я получаю, является именем последнего ученика в списке. Метод, который проходит через файл, называется «FileAnalyzer». Ниже приведен мой код.Как я могу исправить вывод из ArrayList?
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class StudentStats {
public static void main(String[] args) {
List<Student> example = null;
example = FileAnalyzer("C:\\Users\\achraf\\Desktop\\ach.csv");
for (int i = 0; i < example.size(); i++)
{
System.out.println(example.get(i).getName());
}
}
public static List<Student> FileAnalyzer(String path) //path is the path to the file
{
BufferedReader br = null;
List<Student> info = new ArrayList<Student>();
String line = "";
try {
br = new BufferedReader (new FileReader(path));
while ((line = br.readLine()) != null)
{
//We create an object "Student" and add it to the list
info.add(new Student(line));
}
}
catch (FileNotFoundException e) {
System.out.println("Aucun fichier trouvé");
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return info;
}
В случае, если вам это нужно, вот код для класса студента
// This class create objects for each student
public class Student {
private static String Name ="";
private static String Sex = "";
private static String Grade = "";
//constructor
public Student(String infos)
{
String [] etudiant = infos.split(",");
Name = etudiant[0];
Sex = etudiant[1];
Grade = etudiant[2];
}
// Getter functions
public String getName()
{
return Name;
}
public String getSex()
{
return Sex;
}
public String getGrade()
{
return Grade;
}
}
Ниже приводится содержание типичного файла, который считывает программы.
lovett,M,12
Achos,F,23
Loba,M,24
Реальная проблема заключается в том, что после того, как работает мой код, чтобы получить имена, я получаю имя «Loba» три раза вместо того, чтобы все имена.
Большое вам спасибо! Вы заслуживаете медали! В следующий раз я должен быть более осторожным! – akinfermo