所以我有一个GUI类,其中包含addStudent()
方法,旨在调用该方法:经理类的addStudent(Student aNewStudentObj)
,然后使用用户输入的信息创建学生类的对象。然后,此对象将存储在管理器类中的链表中。
我的问题是,如果有任何内容要进入GUI类中的addStudent()
方法的括号中有什么?
我真的尝试了我能想到的一切,现在我正处于脱发的地步,所以所有可能的帮助将不胜感激。请。
我相信所有必需的代码都在下面,但如果您需要完整的GUI类,请告诉我。我还有一个模块类,但我认为这个问题没有必要。
addStudent()
下面GUI类的方法
public void addStudent() {
Manager studentList = new Manager();
studentList.addStudent(); <----------------- What goes in those brackets?
}
学生类如下
public class Student {
private String firstName;
private String surname;
private String email;
private int yearOfStudy;
private int studentId;
private Queue<Module> mods = new LinkedList<>();
public String getFirstName() {
return firstName;
}
public String getSurname() {
return surname;
}
public String getEmail() {
return email;
}
public int getYearOfStudy() {
return yearOfStudy;
}
public int getStudentId() {
return studentId;
}
public String print() {
return "Student ID: " + studentId + "n"
+ "First Name: " + firstName + "n"
+ "Surname: " + surname + "n"
+ "Email: " + email + "n"
+ "Year of Study: " + yearOfStudy;
}
public void addModule(int id, String mCode, int mMark) {
if (mods.size() == 4) {
mods.remove();
}
Module module = new Module();
mods.add(module);
}
//this method returns the module list of this student sorted by marks
public String getModulesSortedByMarks(int id) {
Object[] sortedMods;
sortedMods = mods.toArray();
Arrays.sort(sortedMods);
String sortedModulesList = "";
for (int i = 0; i < sortedMods.length; i++) {
sortedModulesList = "n" + ((Module) sortedMods[i]).print();
}
return sortedModulesList;
}
}
经理类如下
public class Manager {
List<Student> studs = new LinkedList<>();
public void addStudent(Student aNewStudentObj) {
studs.add(aNewStudentObj);
}
public void displayStudent(int studentId) {
System.out.println(studs.get(studentId));
}
public void displayMarks(int studentId) {
Student marks = new Student();
marks.getModulesSortedByMarks(studentId);
}
public void deleteStudent(int studentId) {
studs.remove(studentId);
}
public void displayAll() {
for (Student student : studs) {
student.print();
System.out.println();
}
}
}
问:什么(如果有的话(参数传递给studentList.addStudent()
?
答:这完全取决于"学生列表"类的addStudent()
方法采用哪些参数。
在您的情况下:
-
studentList
是一个Manager
(变量或类的名称都很差,但是..( -
Manager.addStudent()
采用类类型为Student
的对象。 -
调用
addStudent
时,需要有一个可用的Student
类型的对象。
代码中的一个挑战是,您目前无法为"学生"提供姓名或学生 ID。 这是一个问题。
两种解决方案:
a( 为名称等创建"setter"方法。
。和/或...
b( 创建一个接受名称等作为参数的构造函数。
你需要做几件事来使你的代码工作。
根据我从您的问题中了解到的情况,您的Manager
课维护与学生相关的所有数据。
Manager
类应该只有一个实例。但是,GUI
类的addStudent
方法每次调用时都会创建一个新的Manager
实例。
接下来,您需要一种方法来创建Student
类的实例,其中包含属性所需的值,例如firstname
、surname
等您可以使用所有这些参数创建构造函数。
最后,要回答问题中的要点,您需要创建一个Student
实例并将其传递给addStudent
Manager
类的方法。
private List<Student> studentList;
public void addStudent(Student student) {
studentList.addStudent(student); // <-- What goes in those brackets?
}
private Student student;
private List<Student> studentList;
public void addStudent() {
studentList.addStudent(student); // <-- What goes in those brackets?
}