2012-03-05 9 views
0

안녕하세요 이것은 과제를 진행하기 전에 함께 작성한 테스트 클래스이며 원하는 방식으로 작동하지 않는다는 것을 알고 있습니다.PriorityQueue는 내가 원하는 것을 인쇄하지 않습니다.

작업 로그 :

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

문제가 해결되면 대답을 받아 들여야합니다 ... –

답변

3

작업 클래스에 toString 메소드를 작성해야 java가이를 표시하는 방법을 알 수 있습니다. 당신이 얻고있는 것으로 보이는 것은 기본 (Object) toString 출력입니다.

+0

작업의 우선 순위를 얻으려면 (waitline.getNextJob()). getPriorityLevel (예)를 쓰지 마십시오. –

+0

Job에 getPriortyLevel() 메소드가 있다면'System.out.println (waitline.getNextJob(). getPriorityLevel())'을 쓸 수 있고 그 우선 순위 레벨과 관련된 번호를 출력 할 것입니다. – twain249

+0

그러나 Job에 toString() 메서드를 작성하는 것은 쉽습니다. 'public String toString() {우선 순위 : "+ priorityLevel;}"과 같은 것을 써라. – twain249

1

작업 클래스에 toString() 메서드를 오버로드하여 작업을 설명하는 문자열을 반환 할 수 있습니다.

이제 작업을 인쇄하면이 문자열이 반환됩니다.

+0

작업의 우선 순위 수준을 얻으려면 getPriorityLevel (예 :) waitTo.getNextJob()). –

+0

@YuvinNg 당신과 당신이 컴파일러에게 합리적으로 생각하는 것을 쓸 수 있습니다. – EJP

관련 문제