【问题标题】:What goes in to the parentheses of studentList.addStudent()? [closed]studentList.addStudent() 的括号中有什么内容? [关闭]
【发布时间】:2019-12-28 23:55:50
【问题描述】:

所以我有一个带有 addStudent() 方法的 GUI 类,该方法旨在调用 Manager 类的 addStudent(Student aNewStudentObj) 方法,然后创建一个对象Student 类使用用户输入的信息。然后,该对象将存储在 Manager 类中的链接列表中。

我的问题是,位于 GUI 类中的 addStudent() 方法的括号中的内容是什么?

我已经尝试了我能想到的一切,现在我正处于脱发的地步,因此非常感谢所有可能的帮助。请。

我相信所有必需的代码都在下面,但如果您需要完整的 GUI 类,请告诉我。我也有一个 Module 课程,但我认为这个问题没有必要。

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();
        }
    }
}

【问题讨论】:

  • “括号里的内容是什么?” Student的实例

标签: java linked-list


【解决方案1】:

问:什么(如果有)参数被传递给studentList.addStudent()

答:这完全取决于“studentList's` 类的addStudent() 方法采用什么参数。

在你的情况下:

  1. studentList 是一个Manager(变量或类的名字都不好,但是..)

  2. Manager.addStudent() 接受 Student 类类型的对象。

  3. 当您调用addStudent 时,您需要有一个Student 类型的对象可用。

您的代码面临的一个挑战是,您目前无法为“学生”指定姓名或学生 ID。这是个问题。

两种解决方案:

a) 为名称等创建“setter”方法。

...和/或...

b) 创建一个接受名称等作为参数的构造函数。

【讨论】:

    【解决方案2】:

    您需要做几件事才能使您的代码正常工作。

    根据我从您的问题中了解到的情况,您的 Manager 班级保留了与学生相关的所有数据。

    您应该只有一个 Manager 类的实例。但是您的GUI 类的addStudent 方法在每次调用时都会创建一个新的Manager 实例。

    接下来,您需要一种方法来创建具有所需属性值的Student 类实例,例如firstnamesurname 等。您可以使用所有这些参数创建构造函数。

    最后,要回答你的问题,你需要创建一个Student 的实例并将其传递给Manager 类的addStudent 方法。

    【讨论】:

      【解决方案3】:
      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?
          }
      

      【讨论】:

      • 是的,完全正确。问:但是我们如何以及在哪里创建一个“学生”对象?如所写,代码将向 addStudent() 传递一个“null”。
      • 我想你解决了!目前没有收到任何错误。干杯马克斯
      • 是的,你是对的,我想解释他,括号内应该放什么,
      • @A.Shah 我改变了我的代码,所以你有一个更好的解决方案。欢迎您,如果我仍然帮助您:)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2020-01-25
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多