我应该写一个实现Locatable接口的Cruiser类。 Cruiser将具有x,y和speed属性。 x,y和speed是整数。您必须为类Cruiser提供3个构造函数。 Class Cruiser必须实现Locatable接口。
一个构造函数必须是默认值。一个构造函数必须是仅x和y构造函数。一个构造函数必须是x,y和speed构造函数。您必须提供equals方法。 equals()方法应该比较两个Cruiser对象的属性。您必须提供toString()方法。 toString()应该返回Cruiser的x,y和速度。
当我编译它时,它说"类Cruiser是公开的,应该在Cruiser.java中声明"
当我这样做时,我的IDE说&#34 ;;"在公共布尔值等于之后的预期值。但是,为什么在方法中需要分号是没有意义的。
这是我到目前为止所拥有的
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;
}
}
}
答案 0 :(得分:1)
这意味着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
有2个属性x
和y
,以及
在它的equals方法中,它正在比较它们。
另见:
答案 1 :(得分:1)
你有一个具有属性x,y,速度的巡洋舰A,你有了具有x,y,速度的巡洋舰B.如果A.x == B.x,A.y == B.y,A.speed == B.speed都是真的,则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。代码运行良好