在循环内创建新对象

时间:2018-03-31 05:09:21

标签: java arrays

好的,让我更具体地说明正在发生的事情。 for循环的每次迭代的代码都运行正常,因为这里没有包含代码,输入是从用户那里获得的,这些输入存储在" Ball"然后存储在ballStorage中的对象。我有一个在for循环中打印,以告诉我" Ball" ballStorage [i]中的对象包含且结果准确。但是,当我在for循环后打印出整个数组内容的结果时,每一个" Ball"数组中的对象被最后一个" Ball"覆盖。对象的价值观。然后我检查了如果我在for循环之外添加一个新的" Ball"对象到ballStorage.length-1这是空的并且发现" Ball"对象覆盖了所有其他的" Ball"数组中的对象。请帮助并抱歉不清楚发生了什么。

for(int i = 0; i < ballStorage.length-1; i++){

 ballStorage[i] = new Ball();
 System.out.println("\n Ball number "+i+": \n"+ballStorage[i].toString());

}     

2 个答案:

答案 0 :(得分:-1)

如果你想要一个存储对象的数组:

class Ball {
    public static void main (String[] args) {
        Ball[]obj =new Ball[5];
        for(int i=0;i<5;i++)
        {
            obj[i]=new Ball();
        }
         for(int i=0;i<5;i++)
        {
            System.out.println(obj[i]);
        }
    }
}

答案 1 :(得分:-2)

我没有得到你的问题。但是,在分配新对象后,您可以通过索引访问循环内的数组对象。让我们说

for(int x=0; x<ballStorage.Length; x++){
   ballStorage[x] = new Ball(x); //assign value of the ball inside constructor
   //access the ball 
   ballStorage[x].bounce(); //example

   // or you can do this, access previous ball
   if(x > 0)
     ballStorage[x-1].bounce();
}
相关问题