返回ArrayList并在其中打印对象

时间:2013-12-17 23:06:05

标签: java loops arraylist

我对ArrayLists的实现有问题 - 我尝试打印我的对象,但是现在它只打印内存地址。我认为循环是我的救世主不知何故,但不能为...的爱...弄清楚如何循环我的课程对象来实现这一点。我错过了什么?这不是不可能或任何事情,只是我愚蠢地想出来(我的前额现在有我键盘的永久印记)。

public class Course{
    private String courseID;
    private String courseName;
    private int ap;
    private static ArrayList<Course> courses = new ArrayList<Course>();

    public static void main(String[] args) {
    Course programmeringGrund = new Course ("725G61", "Programmering Grundkurs", 6);
    Course itProjekt = new Course ("725G62", "IT-Projektledning - introduktion", 12);
    Course diskretMatematik = new Course ("764G06", "Diskret Matematik och Logik", 6);
    Course informatikTeknik = new Course ("725G37", "Informatik, teknik och lärande", 6);
    System.out.println(getCourses());

} public Course (String aCourseID, String aCourseName, int anAp){
    this.courseID=aCourseID;
    this.courseName=aCourseName;
    this.ap=anAp;
    courses.add(this);

} public static List getCourses(){
    return courses; 
}

3 个答案:

答案 0 :(得分:2)

您需要覆盖toString()中的Course方法。打印的“内存地址”是Object's toString() method的一部分,您没有覆盖toString()

答案 1 :(得分:0)

public class Course 
{
    ...

    @Override
    public String toString()
    {
        return "ID=" + courseID + ", Name=" + courseName;
    }

    ...
}

答案 2 :(得分:0)

您有两种选择:

遍历List返回的getCourses()并打印出每个课程object的值。像

这样的东西
  ArrayList<Course> mycourses = getCourses();
      for(Course obj: mycourses)
      {
      System.out.println("Id is "+obj.courseId);// So on you print everything    
      }

您可以像ZouZou提到的那样覆盖toString()课程中的Course方法。至于你现在还没有覆盖toString()方法,它正在打印List的内存地址