Вместо того, чтобы возвращать правильное значение, метод, который должен был вернуть расстояние между двумя точками, возвращает 0.0 - PullRequest
0 голосов
/ 18 марта 2019

Пожалуйста, извините, если мой код выглядит плохо, я очень плохо знаком с программированием.

Предполагается, что эта программа создаст 10 объектов с координатами x, y, z и найдет расстояние между ними.

Каждый раз, когда я запускаю метод main, расстояние всегда возвращает 0.

Почему это происходит?

public double distance(FireFlyBAS f1)
{
    double fx = f1.x; //passed from FireFlyBAS f1
    double fy = f1.y;
    double fz = f1.z;

    double xx = ((x - fx) * (x - fx)); //x,y,z are all created previously in the class
    double yy = ((y - fy) * (y -fy));
    double zz = ((z - fz) * (z -fz));

    double distance = Math.sqrt(xx + yy + zz);



    return distance;
}

public class DeathMatchBAS
{
public static void main(String args[])
{
    double x = 0;
    double y = 0;
    double z = 0;
    boolean l = true;
    FireFlyBAS f1 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f2 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f3 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f4 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f5 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f6 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f7 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f8 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f9 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS f10 = new FireFlyBAS(x,y,z,l);
    FireFlyBAS[] flies = {f1, f2, f3, f4, f5, f6, f7, f9, f9, f10};
    int count = 10;
    double distance = .5;

    for(int i = 0; i < flies.length; i++)
    {
        l = true;
        flies[i].getL();

        if(l == true)
        {
            flies[i].move();

           distance = flies[i].distance(flies[i]);

            if(distance <= 1.0)
            {
                l = false;
                count--;

                System.out.println("There are " + count + " fireflies alive");

    }


}
}
}
}
...