Java 将对象引用到arraylist

Java 将对象引用到arraylist,java,arraylist,Java,Arraylist,嗨,我不确定如何将对象引用到arraylist 我在其中声明arraylist的类: 对于以下方面的任何帮助,我们将不胜感激: public TutorGroup() { super(); Student student = new Student(Student.name); // this makes no sense studentList.add(student.Student(name, tmaMark)); } 我不确定你想用new Student(Student.na

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

我在其中声明arraylist的类:

对于以下方面的任何帮助,我们将不胜感激

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从何处获取学生对象。如果要将它们打包到ArrayList中然后传入,则为TutorGroup的构造函数提供一个
ArrayList
参数,并在调用该类时传入该列表。如果要一次添加一个学生,请简化构造函数(或去掉它),并为TutorGroup类提供addStudent方法:

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

首先,
name
不是静态的,所以您不能以
Student的身份访问它。name
只有Student的实例才能访问它,如果它是
public
,您想要构造
Student
,而不应该在构造函数中传递Student的
名称。您可以为
Student
属性声明方法

此外,还可以用来将
学生添加到
列表中,最好不要在构造函数中添加学生,使用不同的方法编写此场景

例如:


在TutorGroup构造函数中,您试图在Student类中传递name变量中的值,因为1而无法访问该值。name变量是私有的,因此只有类的成员才能访问它。二,。它还没有保存值,因为这是您试图传递给学生构造函数的内容


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

您的代码有几个问题

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

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

public int getTmaMark() {
   return this.tmaMark;
}
要使用正确的数据创建学生对象,您有两个选项:

选项A)为学生创建一个构造函数,该构造函数接受两个值:

public Student(String aName, int aMark)
{
   super();
   this.name = aName;
   this.tmaMark = aMark;       
}
选项B)为学生班级创建设置器

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);
ArrayList studentList=new ArrayList();
//使用构造函数创建学生
Student studentA=新生(“Alice”,15岁);
//使用setter创建学生
学生B=新学生();
学生b.设置名称(“Bob”);
学生B.设定分数(10);
//将两个学生都添加到ArrayList
学生名单。添加(学生A);
学生名单。添加(学生B);

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

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

public void addStudent(Student x)
    {
    studentList.add(x);
    }
其中,Student x作为参数传递给addStudent方法。要创建一个对象名为newstu和nameofsu的新学生,可以这样做

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

我希望这有帮助

你能用语言解释一下你在这里想做什么吗
Student-Student=new-Student(Student.name);添加(student.student(name,tmark))当你实例化一个新学生时,你应该写:newstudent(“Bob”);也就是说,传入您要使用的名称。您不能引用类变量名,它被定义为“私有字符串名”。非常感谢!我经常对Java感到困惑,但这实际上简化了事情,让我意识到我以前的尝试有多糟糕@向你的朋友致意。:)
Student newstu = new Student(nameOfStu);
addStudent(newstu);