如何在没有getter的情况下显示具有多个参数的对象?

时间:2014-03-25 09:06:22

标签: java arraylist

在我的这个家庭作业中,我的主要内容是:

Lec.addStudent( "James" , "A1" , "BICT" );

在另一个名为LectureRoom的课程中:

import java.util.ArrayList;

public class LectureRoom{

    private String courseName;
    private String roomNumber;
    private String Lecturer;    
    private ArrayList <Student> studentList;

    public LectureRoom(String roomNumber , String courseName , String Lecturer)
    {
        this.courseName=courseName;
        this.roomNumber=roomNumber;
        this.Lecturer = Lecturer;
        this.studentList = new ArrayList<Student>();
    }

    public void printStudents(){

        System.out.println(studentList);

    }

    public void addStudent(String name, String id, String major)
    {
        Student s = new Student(name, id , major);
        studentList.add(s);
    }            

    public ArrayList<Student> getStudentsByMajor(String major)
    {
        ArrayList<Student> students = new ArrayList<>();

        for (Student student : studentList) {
            if (student.getMajor().equals(major))
                students.add(student);
        }

        return students;
    }

结果是:

  

添加:James,A1,BICT

通常情况下,我会用吸气剂:

System.out.println("Adding:" + getStudentName() + ", " + getID() + ", " + getMajor() );

但是在方法addStudent的情况下,我创建了一个名为“s”的对象,它存储了学生的名字,id和major。

假设我想在一行中打印所有这三个,我该怎么办?

我在printStudents()方法

中尝试过这些

1)System.out.println(studentList);

2)for(Student studentdetails : studentList) { System.out.println(studentdetails); }

但两人都返回了 -

  

[学生@ bf5743]

这个错误叫什么,怎么解决?谢谢!

3 个答案:

答案 0 :(得分:2)

您需要覆盖班级中的toString方法,

@Override
public String toString() {
   return String.format();// print your desired format.
}

使用System.out.println(obj)目录将打印使用默认的toString方法,该方法返回:

object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())

答案 1 :(得分:1)

这个问题有更多的解决方案,但很简单,可以覆盖方法toString()

@Override
public String toString() {

    return String.format("%s %s %s", s, id, major);
}

我假设您的Student班级具有包含学生姓名,ID和专业的sidmajor属性。

答案 2 :(得分:0)

查看Object

的API

每个类都有Object作为超类,所以你的Student类在某些方面基本上扩展了Object。

这很重要,因为它意味着您的Student类可以使用Object中的每个可访问方法和字段。您可以在ide中看到这个使用buy doing studentdetails。并查看出现的列表。

如果层次结构中的方法不是最终的且可访问,则可以override它们并添加您自己的实现。