2013-10-27 32 views
0

我有一個情況,我需要填充對象數組。我需要使用引用變量嗎? (LinkedList)

這是我的代碼:

final class ObjectClass 
{ 
    List<ObjectClass> array; 
    private int data; 

    ObjectClass(int data) 
    { 
     this.data = data; 
    } 

    public void fillArray() { 
     array = new LinkedList<>(); 
     for(int i = 0;i < array.size();i++) 
     { 
      data++; 
      array.add(new ObjectClass(data)); 
     } 

    } 
} 

,我得到這個沒有結果。那有什麼問題? 這樣添加是否有效:array.add(new ObjectClass(data))

這種情況下的結果和邏輯沒有意義。我只想用不同的數據值創建ObjectClass的數組。我看到了,有人使用了一個引用變量並將其存儲在一個數組中,但是通過創建唯一對象來使它失效還是有效的嗎?

添加打印方法:

public void display() { 
    for(ObjectClass e : array) { 
     System.out.println(e); 
    } 
} 
+1

你是什麼意思,你得到「沒有結果」?你有什麼嘗試?具體發生了什麼? –

+0

我想製作一個ObjectClass數組並打印它的對象。 – Ernusc

回答

1

每次調用fillArray時候,你正在破壞數據在陣列中(但它的方式作出了在那裏)有這樣的:

array = new LinkedList<>(); 

首先,改變你的野外使用急於初始化代替,所以你每次方法調用都不會覆蓋您的字段。

List<ObjectClass> array = new LinkedList<>(); 

現在,爲您的方法。由於array始終爲空,因此不會進入循環。根據您要完成的內容,您應該傳遞該對象,或者創建它的副本,即n次。

public void fillArray(int times) { 

    for(int i = 0;i < times; i++) { 
     data++; 
     array.add(new ObjectClass(data)); 
    } 

} 

最後,觀察,如果循環工作,dataarray.size()將相當於(只要你沒有刪除任何東西)。我會重新考慮這個變量的目的/意圖。

+0

謝謝,我正在努力。 ! – Ernusc

0

聲明List<ObjectClass> arraystatic,它會做你正在試圖通過創建Class variable沒有對象級別

0

問題是要達到什麼樣的array(實際上它不是一個數組 - 它是錯誤的)最初大小爲0,所以該方法什麼都不做。

你忘記考慮你想用數據結構「填充」多少個數字。

4

爲什麼什麼也沒有發生的原因是在這裏:

for(int i = 0;i < array.size();i++) 

前行,您剛剛創建的array所以它仍然是空的 - 因此,完全不執行循環體。

+0

Ahhhr,是的,是的,沒有注意到。謝謝! – Ernusc

相關問題