Java Can';不要在不同的类中使用值
我知道如何将价值从一个类转移到另一个类。 就在这里,它不起作用。我不明白为什么 请帮我找到一个bug 当我试图获得价值时: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
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 fieldsx
和y
,默认设置为0
顺便说一下,将一个cartesiancoordination
实例作为构造函数参数传递,然后在构造函数内部重新初始化它是没有意义的。要么传递x
和y
值,如public Velocity(int x,int y)
,要么只指定坐标
将来,你会想知道关于课堂的情况。在下面的一行:
c = new CartesianCoordinate(x,y);
您正在创建一个新实例,其值为Velocity
instance private fieldsx
和y
,默认设置为0
顺便说一下,将一个cartesiancoordination
实例作为构造函数参数传递,然后在构造函数内部重新初始化它是没有意义的。要么传递x
和y
值,如public Velocity(int x,int y)
,要么只指定坐标
将来,您会想了解类。x,y变量尚未初始化,因此您始终会收到0x,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中的实例变量应该是私有的。