好的,让我更具体地说明正在发生的事情。 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());
}
答案 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();
}