2013-11-26 49 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);