2014-03-25 17 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並添加您自己的實現。

相關問題