2013-11-26 50 views
0

好吧,讓我們說我有類燈泡和類圖片。 在燈泡我得到了布爾變量,如果它是真正的燈泡,如果不是燈泡關閉我在構造函數中默認關閉,並使2方法turnOn和turnOff。 我需要在用戶輸入(在創建對象圖片的主要方法中)數組長度的燈泡圖片數組中。 所以可以說這是我的圖片類:使用數組創建對象的對象

private Bulb [] arr ; 

Picture(int len) 
{ 
    Bulb [] arr = new Bulb[len]; 
} 

現在,如果我想在每個單元格中輸入燈泡我需要這樣做:

Bulb b = new Bulb(); 
Bulb c = new Bulb(); 
Bulb d = new Bulb(); 

for(int i=0;i<len;i++) 
{ 
    arr[i] = b; 
    arr[i] = c; 
    arr[i] = d; 
} 

當然我不能在這樣做我現在不需要通過變量len創建多少個對象。

+1

您目前正在重寫你做'改編[I]'每項任務。 –

+0

爲什麼你需要使用for循環? –

+2

爲什麼不'for(int i = 0; i

回答

2

您可以使用數組的length屬性來填充包含燈泡的數組。

for(int i = 0; i < arr.length; i++) { 
    arr[i] = new Bulb(); 
} 
1

您不必在循環之前創建所有Bulb情況下,因爲你根本不知道你需要多少。你爲什麼不嘗試像下面這樣簡單的事情?

private Bulb [] arr ; 

Picture(int len) 
{ 
    arr = new Bulb[len]; 
    for(int i=0;i<len;i++) 
    { 
     arr[i] = new Bulb(); 
    } 
} 
0

我想你會想要一個ArrayList,這是一個可調整大小的列表數組實現。

...
的ArrayList <燈泡>燈泡=新的ArrayList <燈泡>(); (class cell:cells){
bulbs.add(new Bulb());
}
...

- 或 -

如果你真的想與一些指數來回來以後拉球:

...
HashMap的< INT,燈泡>燈泡=新的HashMap < int,燈泡>();
for(int i = 0,i < len; i ++){
bulbs.put(i,new Bulb);
}
...
0

有幾個問題與您的代碼:

  • 你的構造函數創建一個新的變量,而不是實例字段
  • 您的循環每個燈泡寫入相同的指數。你將會得到一系列'd'燈泡

如果你需要通過索引訪問你的燈泡,或者如果你不需要訪問你的燈泡,使用列表可能會更容易。

private List<Bulb> bulbs; 

Picture(int len) 
{ 
    bulbs = new ArrayList<Bulb>() 
} 

然後

Bulb b = new Bulb(); 
Bulb c = new Bulb(); 
Bulb d = new Bulb(); 

bulbs.add(b); 
bulbs.add(c); 
bulbs.add(d); 

然後,例如讓燈泡B:

bulbs.get(1);