2013-11-02 99 views
-1

作爲我對java的研究的一部分,我試圖創建一個搜索函數,該函數採用一個參數String key,該參數與對象Planedestination相關。搜索沒有返回對象

在此之前,我創建了一個Queue of 20對象,每個對象具有不同的參數,現在正試圖通過destination進行搜索。

這是我到目前爲止有:

public Plane searchDestination(String key) 
    { 
     Plane current = first; 
     while(current.destination != key) 
     { 
      if(current.next == null) 
       return null; 
      else 
       current = current.next; 
     } 
     return current; 
    } 

它返回成功的構建,但不與匹配標準返回一個對象(S),我嘗試添加return current;System.out.println(current);但是編譯器會引發出一個錯誤。我也有一個.displayPlane();函數應該顯示所有平面細節(並在其他情況下工作),但是當我在return current;後面添加current.displayPlane();時,出現錯誤,指出它無法訪問。

我是否正確地做了搜索,或者我錯過了什麼?

+8

不要使用==和!=來比較字符串。使用等於。當你收到錯誤信息時,閱讀它,或者如果你不明白它,就發佈它。它包含了對問題的精確解釋。在這種情況下,編譯器會重新編譯,因爲它知道System.out.println永遠不能執行,因爲該方法之前返回。 –

+0

把'System.out.println(current);''return current''放在測試之前。 –

回答

2

更換

while(current.destination != key) 

while(!current.destination.equals(key)) 

對於任何對象(如String)比較,你應該總是使用equals。請勿使用==!=,因爲它僅比較對象的引用。對於原始類型數據(如int),您可以使用==!=

+0

啊我看到了,謝謝 – Ilja

+0

@Ilja:歡迎:) – sarwar026

0

您是否考慮過使用目的地圖到飛機。

Map<String, Plane> destToPlane = new HashMap<String,Plane>(); 
if (destToPlane.containsKey(key)) 
    return destToPlane.get(key); 
else 
    System.out.println("Key not in there");