首页 > 解决方案 > 在链表中存储对象

问题描述

我正在创建一个简单的程序,它从文本文件中读取数据并将其显示在控制台中。我显示的数据是有关学生的信息 - 姓名、身份证、科目、分数等

程序读取文本文件,并为找到的每个用户创建一个学生对象。尝试将这些学生存储在链接列表中时遇到问题。似乎每次都会创建一个新列表并覆盖之前的列表,所以我总是以列表中的一个学生结束。

我怎样才能让它在不覆盖以前的列表的情况下存储它们?下面是我的一些代码:

public static boolean readFile(String filename) {
    File file = new File(filename);
    try {
    Scanner scanner = new Scanner(file);
    while(scanner.hasNextLine()){
     String[] words = scanner.nextLine().split(",");

     int id = Integer.parseInt(words[0]);
     String firstName = words[1];
     String lastName = words[2];
     int mathMark1 = Integer.parseInt(words[3]);
     int mathMark2 = Integer.parseInt(words[4]);
     int mathMark3 = Integer.parseInt(words[5]);
     int englishMark1 = Integer.parseInt(words[6]);
     int englishMark2 = Integer.parseInt(words[7]);
     int englishMark3 = Integer.parseInt(words[8]);

     addStudent(id,firstName,lastName,mathMark1,mathMark2,mathMark3,englishMark1,englishMark2,englishMark3);
     }
    scanner.close();
    } catch (FileNotFoundException e) {
    System.out.println("Failed to read file");
    }
     return true;
    }


private static void addStudent(int id, String firstName, String lastName,int
        mathsMark1, int mathsMark2, int mathsMark3, int englishMark1, int englishMark2,
        int englishMark3) {
    LinkedList<Student> student = new LinkedList<>();
    student.add(new Student(id,firstName,lastName));

    LinkedList<AssignmentMarks> mathematicsMarks = new LinkedList<>();
    mathematicsMarks.add(new AssignmentMarks("Mathematics",mathsMark1,mathsMark2,mathsMark3));

    LinkedList<AssignmentMarks> englishMarks = new LinkedList<>();
    englishMarks.add(new AssignmentMarks("English",englishMark1,englishMark2,englishMark3));
}

上面的代码在我的 Main 类中。下面的代码来自我的学生课:

public class Student {

    private int id;
    private String firstName;
    private String lastName;
    private AssignmentMarks mathMarks;
    private AssignmentMarks englishMarks;

    public Student(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFullName() {
        return firstName;
    }
}

任何帮助将不胜感激谢谢你们!

标签: javalistobject

解决方案


这个变量

LinkedList<Student> student = new LinkedList<>();

需要在方法外声明为字段,或者在方法内声明readFile为参数传入,否则每次调用都会创建addStudent


推荐阅读