我知道如何将价值从一个类别转移到另一个类别。 就在这里,它不起作用。我不明白为什么。
请帮我找一个错误。
当我试图获得价值时:
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;
}
}
答案 0 :(得分: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
和CartesianCoordinate
初始化的全新x
“覆盖”y
的值,此时,它们都为0(因为您没有初始化双打)。
如果您删除第1行,则至少会获得通过它的x
CartesianCoordinate
。
答案 1 :(得分:1)
c = new CartesianCoordinate(x,y);
此构造函数调用为x = 0
类的成员变量y = 0
和x
分配y
和CartesianCoordinate
。这是因为在Velocity
类中{ {1}}和x
提供了默认值y
,因为您从未更改过它。因此,您0
和0
c.getX()
答案 2 :(得分:0)
只需删除
c = new CartesianCoordinate(x,y);
来自Velocity构造函数的
答案 3 :(得分:0)
以下一行:
c = new CartesianCoordinate(x,y);
您正在创建一个值为Velocity
实例私有字段x
和y
的新实例,默认设置为0。
顺便说一句,将CartesianCoordinate
实例作为构造函数参数传递,然后在构造函数本身内重新初始化是没有意义的。您可以传递x
和y
之类的值public Velocity(int x, int y)
,也可以只指定坐标。
将来,您需要了解Point2D
课程。
答案 4 :(得分:0)
x,y变量尚未初始化,因此您总是收到0