我应该编写一个Cruiser类来实现Locatable接口。巡洋舰将有x,y和速度属性。x、y和速度都是整数。您必须为类Cruiser提供3个构造函数。类巡航器必须实现Locatable接口。
一个构造函数必须是默认的。一个构造函数必须是x和y唯一的构造函数。一个构造函数必须是x、y和速度构造函数。您必须提供一个equals方法。equals()方法应该比较两个Cruiser对象的属性。必须提供toString()方法。toString()应该返回巡洋舰的x、y和速度。
当我编译这段代码时,它显示"class Cruiser是公共的,应该在Cruiser.java中声明“。
当我这样做的时候,我的IDE会在public boolean equals后面显示";“。但是这并不能解释为什么你需要在一个方法中使用分号。
这是我到目前为止所拥有的
public interface Locatable
{
public int getxPos();
public int getyPos();
}
public class Cruiser implements Locatable
{
private int xPos, yPos, speed;
public Cruiser()
{
xPos=yPos=speed=0;
}
public Cruiser(int x,int y)
{
xPos=x;
yPos=y;
speed=0;
}
public Cruiser(int x, int y, int spd)
{
xPos=x;
yPos=y;
speed=spd;
}
public int getxPos()
{
return xPos;
}
public int getyPos()
{
return yPos;
}
public int getSpeed()
{
return speed;
}
public void compare(Cruiser A, Cruiser B)
{
@Override
public boolean equals(Object obj)
{
if (obj instanceof Cruiser) {
Cruiser cruiserToCompareTo = (Cruiser)obj;
if(xPos == cruiserToCompareTo.getXpos() &&
yPos == cruiserToCompareTo.getYpos() &&
speed == cruiserToCompareTo.getSpeed())
return true;
}
return false;
}
public String toString()
{
String properties = "X position:"+ xPos+ ", Y position:"+yPos+ ",Speed:"+speed;
return properties;
}
}
}发布于 2014-04-13 05:16:59
这就是equals应该比较字段/属性的含义。
public boolean equals(Object obj) {
if (obj instanceof Point) {
Point pt = (Point)obj;
return (x == pt.x) && (y == pt.y);
}
return super.equals(obj);
}此示例取自java.awt.Point
它是Java的内置类之一。
因此Point有两个属性x和y,并且
在它的equals方法中,它正在比较它们。
另请参阅:
java.awt.Point.equals
发布于 2014-04-13 05:28:53
你有一个具有x,y,速度属性的巡洋舰A,你有一个具有x,y,速度的巡洋舰B。如果A.x == B.x、A.y == B.y、A.speed == B.speed都为true,则Equals应返回true。因此,当所有参数相等时,巡洋舰A和巡洋舰B是相等的。
编辑:应在Cruiser-Class中输入以下代码
public int getSpeed() {
return speed;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Cruiser) {
Cruiser cruiserToCompareTo = (Cruiser)obj;
if(xPos == cruiserToCompareTo.getXpos() &&
yPos == cruiserToCompareTo.getYpos() &&
speed == cruiserToCompareTo.getSpeed())
return true;
}
return false;
}请:更好地格式化您的代码,而且在Cruiser-Class中以与接口中相同的方式命名方法。
编辑2:关于你的第二个问题:你需要分离文件,Cruiser.java和Locatable.java。代码在这里运行得很好
https://stackoverflow.com/questions/23036149
复制相似问题