2017-10-17 15 views
-5

私はちょうど学校プロジェクトのためにJavaでコーディングをやり始めました。今私は本当にこの課題に固執しています。 この課題では、私はPoint pを作って、私が提示した方法でxとyを得なければなりません。しかし、今私はJUnitテストを実行しているときにStackOverflowErrorを取得します(テストが行​​われます)。私は何が間違っているのか分からない、誰かが私を助けることができる?コンストラクタを使用した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

ポイントp =新しいポイント(2.0、5.0); ')コンストラクタで? – Eran

+2

'Point'の作成中に' Point'を作成します。あなたのエラーへの再帰的な構造 – AxelH

+0

私は思ういくつかの外部メソッドから 'Point p = new Point(2.0、5.0);'を呼び出す必要があります –

答えて

1

ここではインスタンスPoint pは必要ありません。

最初は、再帰的メソッド(ここのコンストラクタ)であり、Pointの無限インスタンス化をもたらし、StackOverflowErrorにつながります。

第2に、ゲッターが使用されていなくても、何もしていません。

最後、あなたはおそらく、あなたのクラスをテストする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; 
} 
+0

@scaryWombat nice catch!次回は自分の答えを編集しても構いません。) – AxelH

関連する問題