如何使用数组列表访问java中访问列表类型对象的方法

时间:2013-01-06 10:19:03

标签: java

在我的课程中有三个班级学生,学校和TestStudent。我已经宣布学生在学生班级内陈述,并且还有获得学生课程的方法,我已经在学校班级创建了一个类型学生的数组列表,但是当我尝试在学校中访问学生的方法时我得到错误newStudent类型无法解决这是我的代码。

public class Student {
        String name;
    String subject;
    int age;
    Student(String name,String subject,int age){
    this.name = name;
    this.subject = subject;
    this.age = age;
}
public void setName(String name){
    this.name = name;
}
public String getName(){
    return this.name;
}
public String getSubject(){
    return this.subject;
}
public int getAge(){
    return this.age;
}

}

public class School {
public ArrayList <Student> students = new ArrayList <Student>(); 
public void addStudent(String name,String subject,int age){
    Student newStudent = new Student(name,subject,age);
    students.add(newStudent);
}
public void showSubject(String student){
     newStudent.getSubject();


}

} 

3 个答案:

答案 0 :(得分:4)

newStudent.getSubject();

这不是你想要的。因为您尚未从student检索到ArrayList

您需要遍历ArrayList,并查看哪个学生的名称已在参数中传递。 因此,只需使用for-each循环迭代ArrayList,然后返回相应的学生。

因此,您的方法应如下所示: -

public void showSubject(String student){
     for (Student student: students) {
        if (student.getName().equals(student)) {
            System.out.println(student.getSubject());
        }
     }
}

请注意,使用Map这是一个更好的主意,正如his answer中@Peter所解释的那样。

答案 1 :(得分:2)

如果您想按姓名查找学生,我会将学生的姓名变为不可变,并使用Map<String, Student>代替。这将允许你写

 Student student = map.get(studentName);

使用列表,您必须按照Rohit的建议搜索每个条目。注意:可以让多个学生使用相同的名称(如在现实生活中)和一个列表。

答案 2 :(得分:1)

newStudentaddStudent()中的本地变量,因此您无法从showSubject()访问它。

我不知道您访问该主题的逻辑是什么,但是,例如,可以通过students.get(0).getSubject()访问[如果列表不为空]