0

あるクラスから別のクラスに価値を置く方法を知っています。ここだけでは機能しません。理由がわかりません。

バグを見つけるのを手伝ってください。

私が価値を得ようとするとき:

 c = new CartesianCoordinate(x, y);
 x = c.getX();

常にゼロです。

public class Velocity
{
    // instance variables - replace the example below with your own
    private double x;
    private double y;
    /**
     * Constructor for objects of class Velocity
     */
    public Velocity(CartesianCoordinate c)
    {
        // initialise instance variables
        c = new CartesianCoordinate(x,y);
        x = c.getX();
        System.out.println(c.getX());
        System.out.println(c.getY());
        System.out.println(c.x);

     }

    public double getX()
    {
        return x;
    }

これが私のCartesianCoordinateです。

    public class CartesianCoordinate
    {
       // instance variables - replace the example below with your own
       public double x;
       public double y;

       /**
        * Constructor for objects of class CartesianCoordinate
        */
       public CartesianCoordinate(double x, double y)
       {
           // initialise instance variables
           this.x = x;
           this.y = y;
       }




    public void setX(double x)
    {
        // put your code here
        this.x = x;
    }

    public void setY(double y)
    {
        this.y = y;
    }

    public double getX()
    {
        return x;
    }

    public double getY()
    {
        return y;
    }
}
4

5 に答える 5

4
public Velocity(CartesianCoordinate c)
{
    // initialise instance variables
    c = new CartesianCoordinate(x,y);   // 1
    x = c.getX();                       // 2
    System.out.println(c.getX());       // 3
    System.out.println(c.getY());       // 4
    System.out.println(c.x);            // 5
 }

1行目で、渡すパラメーターをシャドウします。とで初期化されcた新しい値での値を「上書き」していることを意味します。この時点では、両方とも0です(doubleを初期化していないため)。CartesianCoordinatexy

1行目を削除すると、少なくとも合格したものをx取得できます。CartesianCoordinate

于 2013-03-22T19:20:18.137 に答える
1

c = new CartesianCoordinate(x,y); このコンストラクター呼び出しは、メンバー変数x = 0とクラスの割り当てです。これは、クラス内であり、変更したことがないため、デフォルト値が提供されているためです。だからあなたはy = 0xyCartesianCoordinateVelocityxy00c.getX()c.getY()

于 2013-03-22T19:20:32.787 に答える
0

次の行で:

c = new CartesianCoordinate(x,y);

Velocityインスタンスのプライベートフィールドxとの値を使用して新しいインスタンスを作成しています。これらの値はyデフォルトで0に設定されています。

ちなみに、CartesianCoordinateインスタンスをコンストラクターパラメーターとして渡してから、コンストラクター自体の内部で再初期化することは意味がありません。xyのような値を渡すかpublic Velocity(int x, int y)、座標を割り当てるだけです。

Point2D将来的には、クラスについて知りたいと思うでしょう。

于 2013-03-22T19:22:55.153 に答える
0

削除するだけ

c = new CartesianCoordinate(x、y);

Velocityコンストラクターから

于 2013-03-22T19:22:00.937 に答える
0

x、y変数は初期化されていないため、常に0を受け取ります

于 2013-03-22T19:27:09.053 に答える