Stackoverflower与使用构造函数

时间:2017-10-17 07:47:54

标签: java constructor stack-overflow

我刚开始用Java编写一些学校项目代码。现在我真的被这个任务困住了。 在这个作业中,我必须制作一个Point p并以我呈现的方式获得x和y。但是现在我在运行JUnit测试时得到了一个StackOverflowError(给出了测试)。我不确定我做错了什么,有人可以帮助我吗?

public class Point {
    double x;
    double y;

    public  Point  (double x1, double y1){
        x = x1;
        y = y1;

        Point p = new Point (2.0, 5.0);

        p.getY();
        p.getX();
    }

    public double getY(){
        return y;
    }

    public double getX(){
        return x;
    }
}

1 个答案:

答案 0 :(得分:1)

您在这里不需要您的实例Point p

首先,因为这是一个递归方法(这里是构造函数),导致Point的无限实例化,导致你的StackOverflowError

其次,你没有做任何事情,即使没有使用吸气剂。

最后,您可能想要的是将该代码放在public static void main(String[] args)中以测试您的课程

public static void main(String[] args){
    Point p = new Point (2.0, 5.0);
    System.out.println( "Y = " + p.getY());
    System.out.println( "X = " + p.getX());
}

所以删除构造函数的最后几行

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