2017-10-07 18 views
-2

申し訳ありませんが、これはばかだが、私はjavaに新しいです。コンストラクタ内の値を参照してください。

私はコンストラクタで定義されているコンストラクタの外側の値を参照している変数に値を代入しようとしています。

私がこだわっているコードのスニペットがある:

private int x; 
private int y; 

public Finish(int i, int j) { 

    this.x = i; 
    this.y = j; 

} 

public int getY() { 
    return this.y; 

} 

public int getX() { 
    return this.x; 

だから、基本的には、メインファイルに新しいオブジェクトのフィニッシュは '(さがiとのint jのint型という)をその初期座標を使用して作成されます。私はgetYメソッドとgetXメソッドにこれらの座標を追加する必要がありますので、オブジェクトをそれらの方向に移動できます。

問題は、getメソッドでxまたはyを参照するときに、変数の初期宣言を参照するため、コンストラクターで割り当てられた値を調べるのではなく、値がゼロになります。任意のアイデアを取得する方法でint iとint jを使用する方法?ありがとう。

EDIT:

this.finish = new Finish(this.canvasWidth/2, Math.abs(rng.nextInt()) % this.canvasHeight); 

これは、それが終了オブジェクトを作成し、それの初期位置を指定します、メインファイル内のコードである(this.canvasWidth/2は、変数iとMath.abs(RNGです。このように、finish.javaでは、int iとint jに基づいて位置を示していますが、getXメソッドとgetYメソッドはまだ0のままです。

+3

ここに表示されている内容は正しいです。使用方法を教えてください。 –

+4

0をコンストラクタに渡すと、 'x'と' y'だけが0になります。 – Tom

+0

あなたの問題を再現するために使用できる[mcve]を投稿してください。既に投稿したコードは問題ありませんので、上記のコードを呼び出すコードに問題がなければなりません。 –

答えて

0

あなたがしようとしていることは実行可能ではありません。プログラムがouを終了するとすぐにコンストラクタのt、iおよびjは範囲外です。私はあなたがxijを変更し、yので、変数名ということ、しかし、お勧めし

foo = new Finish(100, 200) 
System.out.println(foo.getX()) #prints 100 
System.out.println(foo.getY()) #prints 200 

あなたがここにあるコードが正しい、ここでそれを使用する方法のサンプルですエンドユーザーにとってより直感的になります。

関連する問題