2014-03-25 18 views
1

在本次作业我的,在我主我这一行:如何显示不带getter的多个参数的对象?

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

通常,用吸气剂I wo ULD:

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

然而,在这种情况下,方法addStudent,我创建了一个叫做“S”的对象,它存储的学生,身份证和专业的名称。

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

我在printStudents尝试了这些()方法

1)System.out.println(studentList);

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

但两者退还─

[学生@ bf5743]

这是什么问题或叫,我该如何解决?谢谢!

+3

重写toString方法 – pshemek

+0

在一些小时内,整个作业将由s.o完成。一次一个答案..:/ – 2014-03-25 09:10:29

+0

对不起@RC。!我可以问一天多少次?我真的尝试过,而压倒一切对我来说是新东西,而这些在演讲中还没有讲授。 –

回答

1

没有关于此问题的详细解决方案,而是一个很简单的一个,可能是压倒一切的toString()

@Override 
public String toString() { 

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

我假设你Student类有属性sidmajor包含学生的方法名称,编号和主要。

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()) 
+0

好的谢谢你的头!重写对我来说是全新的。顺便说一句,有这个错误的任何名称? –

+0

@SamLiew - 这不是一个错误。当你使用'println()'的大部分对象时,它就是类名,随后是打印的散列码。 '[Student @ bf5743]'是类和哈希码。 –

+0

@RudiKershaw ok了。谢谢! –

0

看一看在该API Object

每个类都有Object作为超类,因此您的Student类在cov ers基本上在某些时候扩展了Object。

这很重要,因为它意味着对象中的每个可访问的方法和字段都可用于您的学生类。你可以在你用来购买studentdetails的ide中看到这个。并看到出现的列表。

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

相关问题