2016-03-15 104 views
0

我想创建一个函数,它使随着类型BasicAsteroid(x,y,velocity x,velocity y)值的随机小行星,这是创建随机小行星的构造函数和函数:从HashCode Java获得价值

private double x, y; 
private double vx, vy; 

public BasicAsteroid(double x, double y, double vx, double vy) { 
    this.x = x; 
    this.x = y; 
    this.vx = vx; 
    this.vy = vy; 
} 

public static BasicAsteroid makeRandomAsteroid() { 
    Random rand = new Random(); 
    BasicAsteroid x = new BasicAsteroid((rand.nextInt()%FRAME_WIDTH), (rand.nextInt()%FRAME_HEIGHT), (rand.nextInt()%MAX_SPEED), (rand.nextInt()%MAX_SPEED)); 
    System.out.println(x); 
    return x; 
} 

然而,这是输出,当我创建小行星:

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

我怎么能输出的值,而不是阶级@哈希码?

谢谢。

+1

覆盖'的toString()'方法 –

+0

我怎么能做到这一点,同时能够使用类型BasicAsteroid对象的值在另一类? – user2975192

+0

另外,你应该传递“rand”变量:makeRandomAsteroid(Random rand)。原因是新的随机对象是用毫秒时间戳创建的。如果这些是按顺序执行的,那么它们很可能具有相同的随机值,因此会有很多重叠的小行星。 –

回答

5

覆盖的toString()方法

@Override 
public String toString(){ 
    return "Asteroid at "+x+" "+y+" velocity "+vx+" "+vy; 
} 
0

你需要重写toString()方法的类。

@Override 
public String toString(){ 
    return "x: "+this.x+"y: "+this.y+"vx: "+this.vx+"vy: "+this.vy 
} 
0

在java中,当您打印一个对象时,会调用其toString()方法来创建将要打印的字符串。你在这里看到的是默认的toString方法的输出。如果你想很好地打印值,增加一个功能是这样的:

@Override 
String toString(){ 
    return "Asteroid with coords: (" + x + ", " + y + "), velocity: (" + vx + ", " + vy + ")"; 
}