在我的这个家庭作业中,我的主要内容是:
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]
这个错误叫什么,怎么解决?谢谢!
答案 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和专业的s
,id
和major
属性。
答案 2 :(得分:0)