java - 在链表中存储对象
问题描述
我正在创建一个简单的程序,它从文本文件中读取数据并将其显示在控制台中。我显示的数据是有关学生的信息 - 姓名、身份证、科目、分数等
程序读取文本文件,并为找到的每个用户创建一个学生对象。尝试将这些学生存储在链接列表中时遇到问题。似乎每次都会创建一个新列表并覆盖之前的列表,所以我总是以列表中的一个学生结束。
我怎样才能让它在不覆盖以前的列表的情况下存储它们?下面是我的一些代码:
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;
}
}
任何帮助将不胜感激谢谢你们!
解决方案
这个变量
LinkedList<Student> student = new LinkedList<>();
需要在方法外声明为字段,或者在方法内声明readFile
为参数传入,否则每次调用都会创建addStudent
推荐阅读
- excel - 工作簿(名称) Excel VBA
- node.js - 无法在 Node.js 中使用类和保存数据
- react-native - 为什么我的自定义按钮有时显示不正确?
- c++ - 没有函数模板的实例与参数列表匹配我不知道为什么
- sql - 查找过去三年内每位客户的平均订单数?
- csv - 如何从 Google Cloud Storage CSV 读取并将其加载到 Google Data Store
- wordpress - 将初始值从 wordpress 传递到 vuex
- javascript - DTN 天气小部件未显示在页面上?
- c# - 如何在不调用控制器的情况下测试 ModelState
- node.js - 带有 Node 和 Mongo 的 docker-compose 不会同时启动