嗨,我不确定如何将对象引用到我的arraylist。
我宣布arraylist的类:
非常感谢任何帮助
答案 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);
我希望这会有所帮助。