将对象引用到arraylist

时间:2015-05-07 01:13:19

标签: java arraylist

嗨,我不确定如何将对象引用到我的arraylist。

我宣布arraylist的类:

非常感谢任何帮助

5 个答案:

答案 0 :(得分:1)

关于:

public TutorGroup() {
  super();
  Student student = new Student(Student.name); // this makes no sense
  studentList.add(student.Student(name, tmaMark));
}

我不确定你要用new Student(Student.name)做什么,因为不清楚这段代码试图做什么,但无论如何,编译器是对的 - 它不应该存在,所以摆脱它。

删除此TutorGroup构造函数并重新执行。你如何重新做它将取决于你的TutorGroup获取Student对象的位置。如果将它们打包到ArrayList中然后传入,则为TutorGroup的构造函数提供一个ArrayList<Student>参数,并在调用该类时传入列表。如果你一次添加一个学生,那么使构造函数变得简单(或摆脱它),并给TutorGroup类一个addStudent方法:

public void addStudent(Student s) {
   studentList.add(s);
}

答案 1 :(得分:1)

首先name不是静态的,因此您无法以Student.name访问它,只有学生的实例可以访问它public。现在,您想要构建Student 1}}比您应该在构造函数中传递name学生。您可以为Student属性声明getter and setter方法。

此外ArrayList.add可用于将Students添加到list,最好不要在构造函数中添加学生使用不同的方法来编写此方案。

例如:

Student student = new Student("NewStudent");
System.out.println("Name of student :" +student.getName());
studentList.add(student);

答案 2 :(得分:0)

在您的TutorGroup构造函数中,您尝试传递您无法访问的Student类中的name变量中的值,因为1.名称变量是私有的,因此只有该类的成员才能访问它。 2.它还没有保留一个值,因为那是你试图传递给Student构造函数的东西。

你应该做的是将一个字符串文字传递给你的学生构造函数,如:new Student(&#34; Jamie&#34;)然后它将保存在Student类的name变量中,如果你需要访问该名称稍后在您的Student类中添加一个公共方法,该方法返回名称变量中的值。

答案 3 :(得分:0)

您的代码有几个问题。

首先,Student类应该有一些getter方法,以便您可以从学生对象访问数据:

public String getName() {
   return this.name;
}

public int getTmaMark() {
   return this.tmaMark;
}

要创建具有正确数据的学生对象,您有两个选项:

选项A)为Student创建一个带有两个值的构造函数:

public Student(String aName, int aMark)
{
   super();
   this.name = aName;
   this.tmaMark = aMark;       
}

选项B)为您的学生班级创建setter

public void setName(String aName) {
   this.name = aName;
}

public void setTmaMark(int aMark) {
   this.tmaMark = aMark;
}

当然,您可以在Student中实施这两个选项,为您提供额外的灵活性。

然后,要向ArrayList添加新学生,您只需创建一名学生并使用数组的add方法:

示例:

ArrayList<Student> studentList = new ArrayList<Student>();

// Create student using constructor
Student studentA = new Student("Alice", 15);   

// Create student using setters
Student studentB = new Student();
studentB.setName("Bob");
studentB.setTmaMark(10);

// Add both students to the ArrayList
studentList.add(studentA);
studentList.add(studentB);

请记住,对于studentB示例,如果添加了带有Student类(选项A)参数的构造函数,则还需要创建显式默认构造函数(不带参数)。

答案 4 :(得分:0)

我不确定你到底想要做什么。我假设您要将学生添加到名为student list的ArrayList中。行Student student = new Student(Student.name);正在创建一个名为student的类型为Student的新对象,但是您没有将任何参数传递给student类的构造函数,但它需要一个String作为名称。您想要做的(我认为)是将学生添加到您的数组列表中。由于您的ArrayList具有类型student,因此添加student x的方法应为

public void addStudent(Student x)
    {
    studentList.add(x);
    }

将Student x作为参数传递给addStudent方法。要创建一个对象名为newstu且名称为nameOfStu的新学生,您可以这样做。

Student newstu = new Student(nameOfStu);
addStudent(newstu);

我希望这会有所帮助。