我正在编写一个从文件读取的程序。文件中的每一行都包含有关学生的信息。每个学生都由“学生”类中的一个对象表示。该类Student
有一个getName
返回学生姓名的方法。通过文件的方法返回包含学生对象的 ArrayList。我的问题是,每次我使用 for 循环访问 ArrayList 并获取每个学生的姓名时,我得到的是列表中最后一个学生的姓名。通过文件的方法称为“FileAnalyzer” 下面是我的代码。
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”,而不是获取所有名称。