2012-03-05 84 views
0

嗨,這是一個測試課,在我繼續完成作業之前,我已經把它放在了一起,並且我意識到它不是我想要的方式。這裏是我的課:PriorityQueue沒有打印我想要的東西

JobLog:

import java.util.PriorityQueue; 

public class JobLog { 
    private PriorityQueue<Job> log; 

    public JobLog() { 
     log = new PriorityQueue<Job>(); 
    } 

    public void addJob(Job newJob) { 
     log.add(newJob); 
    } 

    public void addJob(int clock, int exectionTime, int jobNumber, 
      int priorityLevel) { 
     Job newJob = new Job(clock, exectionTime, jobNumber, priorityLevel); 
     addJob(newJob); 
    } 

    public Job getNextJob() { 
     return log.peek(); 
    } 

    public Job removeNextJob() { 
     return log.remove(); 
    } 
} 

的TestClass

public static void main(String[] args) { 
    // TODO code application logic here 

    JobLog waitline=new JobLog(); 
    Job Joba=new Job(3,3,4,12); 
    Job Jobb=new Job(3,3,4,2); 
    Job Jobc=new Job(3,3,4,3); 
    Job Jobd=new Job(3,3,4,4); 
    Job Jobe=new Job(3,3,4,5); 
    Job Jobf=new Job(3,3,4,5); 
    Job Jobg=new Job(3,3,4,1); 

    waitline.addJob(Joba); 
    waitline.addJob(Jobb); 

    System.out.println(waitline.getNextJob()); 
} 

我得到這個結果。

[email protected] 

我想返回工作的所有信息。怎麼樣?

+0

你應該接受答案,如果它解決了你的問題... – 2012-03-06 00:52:00

回答

3

您必須爲作業類編寫toString方法,以便java知道如何顯示它。它看起來是默認的(Object)toString輸出。

+0

我不能寫(waitline.getNextJob())。getPriorityLevel(例如)獲得工作的優先級? – 2012-03-06 00:02:21

+0

如果在Job中有一個getPriortyLevel()方法,你可以寫'System.out.println(waitline.getNextJob()。getPriorityLevel())',並打印出與該優先級相關的數字。 – twain249 2012-03-06 00:04:03

+0

但是在Job中寫​​入toString()方法會很容易。寫一些像'public String toString(){return「Priority:」+ priorityLevel;}' – twain249 2012-03-06 00:05:52

1

您可以重載Job類上的toString()方法以返回描述Job的字符串。

現在當你打印出一個Job時,這個字符串將被返回。

+0

我不能寫(waitline.getNextJob())。getPriorityLevel(例如) 獲得作業的優先級? – 2012-03-06 00:02:04

+0

@YuvinNg你可以寫任何你認爲對你和編譯器有意義的東西。 – EJP 2012-03-06 00:49:44