2013-11-02 39 views
-1

我已經定義了類Plane的對象數組。就像這樣:正確的方法來操作/從對象數組中獲取信息

 Plane[] terminalOne = new Plane[] { 
      new Plane(1, "Madrid", "Ryanair", "Airbus A300", "05.00"), 
      new Plane(3, "Riga", "AirBaltic", "Boeing 737", "05.30") 
      //ETC.. 
     }; 

我試圖找出如何操縱/從這個數組獲取信息,例如,顯示對象。我試過System.out.println(terminalOne);,它返回[Lairport.Plane;@322ba3e4(機場是我的包裹)我不明白這是什麼意思,但我認爲它返回第一個對象?我試圖使其更具可讀性,並在我的文件,我定義平面類和對象的構造我添加了這個功能:

public void displayPlane() // display plane 
    { 
     System.out.println(); 
     System.out.print("{" + flightID + "," + destination + "," + airline + "," + aircraft + "," + time + "}"); 
     System.out.println(); 
    } 

要顯示在{.., .., .., .., ..}表單對象信息,並試圖將它在我的主文件爲terminalOne.displayPlane();然而得到了一個編譯器錯誤,說:「無法找到符號,符號:方法displayPlane(),位置:變量terminalOne類型Plane []」

我與LinkedLists一起工作,我在一個單獨的文件中定義這些方法,搜索,刪除等。我可以做這樣的數組,如果是這樣的話,是什麼正確的方式?

回答

2

terminalOne是一個數組,而不是一個單獨的平面。你可以使用:

for (Plane plane : terminalOne) { 
    plane.displayPlane(); 
} 

...但我個人認爲在Plane覆蓋toString()代替:

@Override public String toString() { 
    return "{" + flightID + "," + destination + "," + airline + "," + 
      aircraft + "," + time + "}"; 
} 

然後:

for (Plane plane : terminalOne) { 
    System.out.println(plane); 
} 
+0

所以,現在,我可以在我的飛機類中創建不同的方法,比使用它們這樣對嗎?另外,是否可以使用這個方法來處理幾個數組,例如'for(Plane plane:terminalOne && terminalTwo)'(試過這個,不起作用) – Ilja

+0

@Illja:不,你不能使用&&'結合名單。但是你可以使用Guava(http://guava-libraries.googlecode.com)並使用'for(飛機:Iterables.concat(terminalOne,terminalTwo))' –

0

爲喬恩建議你可以取代你的displayPlane()方法與toString()實施。
然後,你可以調用

System.out.println("terminalOne = " + Arrays.toString(terminalOne)); 

看到你的陣列打印的所有elemens。

從「串聯」的輸出結果你就可以這樣做:

List<Plane> concatList = new ArrayList<Plane>(); 
Collections.addAll(concatList, terminalOne); 
Collections.addAll(concatList, terminalTwo); 
// add many more terminals and then print 
System.out.println(concatList); 

只使用標準的Java庫