在Java中的变量之间切换的对象

时间:2014-11-19 18:43:07

标签: java object geometry

我正在接受一些Java培训,但我仍然坚持如何解决这个问题。如何访问不同的变量?例如,我想访问c1的{​​{1}},但它会向我x,这是默认的0

以下是代码:

x

2 个答案:

答案 0 :(得分:1)

您没有创建Circle的任何实例,并且您的所有变量都是静态的,因此x == c1.x == c2.x(它们都引用完全相同的变量)。

我会摆脱静态变量并正确初始化实例:

public class Circle 
{
    double x; // x-coordinate of centre
    double y; // y-coordinate of centre
    double r; // radius

    public static void main(String[] args)
    {   
        Circle c1 = new Circle();
        c1.x = 1;
        c1.y= 2;
        c1.r= 4;

        Circle c2 = new Circle ();
        c2.x = -2;
        c2.y=0;
        c2.r=2;

        System.out.println("distance " + Math.sqrt((c2.x-c1.x)*(c2.x-c1.x) + (c2.y-c1.y)*(c2.y-c1.y)) );
    }
}

答案 1 :(得分:1)

你应该学习OOP。您需要删除静态定义并添加实例方法以计算到其他Circle的距离。这种添加更多以OOP为导向。

以下是修改后的代码:

public class Circle {

    private double x;
    private double y;
    private double r;

    public Circle(double x, double y, double r) {
        this.x = x;
        this.y = y;
        this.r = r;
    }

    public double distanceTo(Circle other) {
        double deltaX = other.x - this.x;
        double deltaY = other.y - this.y;

        return Math.sqrt(deltaX * deltaX + deltaY * deltaY);
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public double getR() {
        return r;
    }

    public static void main(String[] args) {
        Circle c1 = new Circle(10, 10, 10);
        Circle c2 = new Circle(100, 100, 10);   
        System.out.println(c1.distanceTo(c2));

    }
}