2013-03-15 105 views
-1

的START方法中的我的Driver類:調用從物體在一個隊列

for (systemClock = 0; systemClock < 200; systemClock = (systemClock + 1)){ 
     if(((inputQueue.query()).arrivalTime()) == systemClock) 
      System.out.println(((inputQueue.remove()).removalTime())); 
    } 

在一個Job類:

public int arrivalTime() 
{ 
    return arrivalTime; 
} 

我的問題是代碼的第二行內。

if(((inputQueue.query()).arrivalTime()) == systemClock) 

在類我們做了一個基本QueueObject,具有方法query()返回在隊列的前面找到的對象。每個對象都是一個工作,其中有各種變量和方法(在這種情況下,所有重要的事情都是這個對象的「到達時間」)。我試圖讓這行代碼返回對象,並調用arrivalTime()方法/從這個特定對象中查找到達時間。

編輯:我得到一個編譯錯誤「無法找到符號 - 方法arrivalTime()」

解決方案編輯: 很抱歉的混亂/壞傢伙後。我道歉。這是我開始工作的解決方案。我必須將作爲Job對象從隊列中拉出的對象。

​​
+0

呃......那麼你的問題是什麼? – millimoose 2013-03-15 22:36:33

+0

你沒有解釋你發佈的代碼有什麼問題。你說「我的問題在代碼的第二行」 - 什麼「問題」?你也沒有問過問題。 – 2013-03-15 22:37:12

+0

拍我的壞!問題是我收到編譯錯誤。它突出顯示此行並表示找不到符號,「method arrivalTime()」 – 2013-03-15 22:45:26

回答

0

嘗試刪除多餘的括號,和(以防萬一),用一個不等式:

if (inputQueue.query().arrivalTime() >= systemClock) { 
    // ... 
} 

我假設你query()方法返回一個Job對象(如果它不,那麼Queue設計有問題)。


所以,你的問題是,沒有找到符號。

一些提示:

  1. 的方法arrivalTime()標記爲私有?如果是,它應該是公開的。
  2. 這是該方法返回的類型?它必須與systemClock具有相同的類型,並且請記住,您只能將數字==(int,long,double,...)用於==。如果類型與==沒有可比性,則需要創建一個compareTo()或equals()方法
+0

查詢方法的工作原理與它應該完全相同。如果到達時間是EQAUL TO(==)系統時鐘,我需要它只返回方法。所以這是行不通的。 – 2013-03-15 22:44:28

+0

@StephenGilardi發生這種情況時,你不要問**完整**問題 – Barranka 2013-03-15 23:13:41

+0

我很抱歉。我用我的問題更新了原始問題。 – 2013-03-15 23:17:14