Java Can';不要在不同的类中使用值

Java Can';不要在不同的类中使用值,java,coordinate,Java,Coordinate,我知道如何将价值从一个类转移到另一个类。 就在这里,它不起作用。我不明白为什么 请帮我找到一个bug 当我试图获得价值时: c = new CartesianCoordinate(x, y); x = c.getX(); 它总是零 public class Velocity { // instance variables - replace the example below with your own private double x; private doubl

我知道如何将价值从一个类转移到另一个类。 就在这里,它不起作用。我不明白为什么

请帮我找到一个bug

当我试图获得价值时:

 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;
    }
这是我的卡特尔坐标:

    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;
    }
}
在第1行中,对要传递的参数进行阴影处理。这意味着您正在使用一个全新的
cartesiancoordination
来“覆盖”
c
的值,该坐标由
x
y
初始化,此时两者都为0(因为您尚未初始化双精度)

如果删除第1行,您将至少获得通过它的
cartesiancoordination
x

在第1行中,对要传递的参数进行阴影处理。这意味着您正在使用一个全新的
cartesiancoordination
来“覆盖”
c
的值,该坐标由
x
y
初始化,此时两者都为0(因为您尚未初始化双精度)


如果删除第1行,您将至少获得传递给它的
cartesiancoordination的
x

c=新的cartesiancoordination(x,y)

此构造函数调用正在为
cartesiancoordination
类的成员变量
x
y
分配
x=0
y
。这是因为
Velocity
x
y
中提供了默认值
0
,因为您从未更改过它。因此,对于
c.getX()
c.getY()
c=新的笛卡尔坐标(x,y),您将获得
0
此构造函数调用正在为
cartesiancoordination
类的成员变量
x
y
分配
x=0
y
。这是因为
Velocity
x
y
中提供了默认值
0
,因为您从未更改过它。因此,对于
c.getX()
c.getY()
只需删除

c=新的笛卡尔坐标(x,y)

从Velocity构造函数中删除

c=新的笛卡尔坐标(x,y)

从以下行中的Velocity构造函数

c = new CartesianCoordinate(x,y);
您正在创建一个新实例,其值为
Velocity
instance private fields
x
y
,默认设置为0

顺便说一下,将一个
cartesiancoordination
实例作为构造函数参数传递,然后在构造函数内部重新初始化它是没有意义的。要么传递
x
y
值,如
public Velocity(int x,int y)
,要么只指定坐标

将来,你会想知道关于课堂的情况。

在下面的一行:

c = new CartesianCoordinate(x,y);
您正在创建一个新实例,其值为
Velocity
instance private fields
x
y
,默认设置为0

顺便说一下,将一个
cartesiancoordination
实例作为构造函数参数传递,然后在构造函数内部重新初始化它是没有意义的。要么传递
x
y
值,如
public Velocity(int x,int y)
,要么只指定坐标


将来,您会想了解类。

x,y变量尚未初始化,因此您始终会收到0

x,y变量尚未初始化,因此您始终会收到0

c=new cartesiancoordina(x,y)对传递的参数进行阴影处理——这是您的意图吗?在您给出的示例代码中,构造函数调用“new cartesiancoordination(x,y)”的x和y从未赋值。旁注:CartesianCoordination中的实例变量应该是私有的。行
c=新的CartesianCoordination(x,y)对传递的参数进行阴影处理——这是您的意图吗?在您给出的示例代码中,构造函数调用“new cartesiancoordination(x,y)”的x和y从未赋值。旁注:CartesianCoordination中的实例变量应该是私有的。