2012-10-07 57 views
0

我被要求創建一個使用數組列表來實現作業隊列的類。 我們可以將作業和運行時添加到隊列中。作業從JobInQueue列表的隊列的前面運行,myPendingTime被減去,完成的作業進入Finishedjobs列表。如何使用布爾值創建增變器方法

它看起來像我們必須使用布爾mutator方法,但我不知道如何創建此方法。 任何人都可以告訴我如何做到這一點。

/** 
    * runs the first job on the queue if there is enough time on the clock. 
    */ 
public boolean runJob() 
{ 
    boolean jobDone = runJob(); 
    if(myJobInQueue.isEmpty() && myDuration > myPendingTime){ 
     myDuration-= myPendingTime; 
     myJobInQueue.remove(0); 
     myFinishedJobs.add(myJobInQueue.get(0)); 
     System.out.println("The job runing is : "+ myJobInQueue.get(0)); 
     jobDone=true; 
    } 
    return jobDone ; 
} 
+1

您的第一行方法將在「最大遞歸深度」中創建無限遞歸結果.. –

+1

在將隊列放入完成隊列之前,您將從隊列中刪除作業。它應該相反,即'myJobInQueue.remove(0);'應該在'myFinishedJobs.add(myJobInQueue.get(0));'後面。 –

+0

使方法返回爲'void',更改'boolean jobDone = false;'從頂部開始並放入這個'if(!jobDone){runJob(); ''在底部。刪除'return jobDone'行。 –

回答

1

根據您輸入的,請看下面的更新程序:

public void runJob(){ 
    boolean jobDone = false; 
    if(!myJobInQueue.isEmpty() && myDuration > myPendingTime){ 
     myDuration-= myPendingTime; 
     myFinishedJobs.add(myJobInQueue.get(0)); 
     myJobInQueue.remove(0); 
     System.out.println("The job runing is : "+ myJobInQueue.get(0)); 
     jobDone=true; 
    } 
    if(!jobDone){ 
     runJob(); 
    } 
    } 

而且我相信你要檢查,myJobInQueue不爲空,即if(!myJobInQueue.isEmpty() && myDuration > myPendingTime)

+0

非常棒!非常感謝。 – user1721548