如何将数组中的元素设置为方法参数?



>我有一个数组,它由许多对象(称为drops(和另一个单独的对象(称为greenDrop(组成。我想一次比较 2 个对象,一个来自数组,另一个将是单独的对象。若要将数组和单独的对象设置为方法参数,请按如下方式编写代码:

public boolean collision (GreenDrop gd1, Drop [] gd2){
for(int i=0;i<numDrops;i++)
{
int xDistBetwnDrops=gd1.xpos-gd2[i].xpos;
int yDistBetwnDrops=gd1.ypos-gd2[i].ypos;
int totalLengthOfDrops=(gd1.xpos+gd1.size)+(gd2[i].xpos+gd2[i].size);
if(xDistBetwnDrops<(totalLengthOfDrops/2)&&yDistBetwnDrops<(totalLengthOfDrops/2))
{
return true;
}
}
return false;
}

我想知道是否可以在方法参数中设置数组的元素而不是使用整个数组?这样我就不必在我的方法中包含 for 循环。然后,在 main 方法中调用该方法将如下所示:

if(collision(greenDrop, drops[i])==true)

该方法的第二个参数可以更改为Drop

public boolean collision (GreenDrop gd1, Drop gd2){
...
//The code has to be changed to not loop (Just compare two objects)
}

但是,如果您仍然想使用collision传递Drop数组(从其他地方(,那么您可以使用varargs

public boolean collision (GreenDrop gd1, Drop... gd2){
...
}

您可以传递零个、一个元素或多个(Drop(对象,例如

collision(greenDrop)
collision(greenDrop, drops[i])
collision(greenDrop, drops[i], drops[j])

我不知道numDrops是从哪里获得的。您可能需要将其更改为gd2.length

你可以向 GreenDrop 类添加一个方法,以检查它是否与 Drop 冲突。或者,如果GreenDrop是从Drop派生的,则可以将该方法放入Drop类中。

class GreenDrop {
...
public boolean collides(Drop drop) {
int xDistBetwnDrops=this.xpos-drop.xpos;
...
}
}

然后,您可以像这样迭代您的删除数组:

for(Drop drop : arrayOfDrops) {
if (greenDrop.collides(drop)) {
// collision detected
// use break to exit for loop here if you want
}
}

相关内容

  • 没有找到相关文章

最新更新