[英]How to set an element in an array as a method parameter?
我有一个数组,其中包含许多对象(称为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){
...
}
您可以传递零个,一个元素或多个(拖放)对象,例如
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.