gpt4 book ai didi

java - Ap 计算机科学 Java 接口(interface)和 Compare 方法困境

转载 作者:行者123 更新时间:2023-12-02 05:56:38 27 4
gpt4 key购买 nike

我应该编写一个实现 Locatable 接口(interface)的 Cruiser 类。 Cruiser 将具有 x、y 和速度属性。 x、y 和速度是整数。您必须为 Cruiser 类提供 3 个构造函数。 Cruiser 类必须实现 Locatable 接口(interface)。

一个构造函数必须是默认构造函数。一个构造函数必须是仅 x 和 y 的构造函数。一个构造函数必须是 x、y 和速度构造函数。您必须提供 equals 方法。 equals() 方法应该比较两个 Cruiser 对象的属性。您必须提供 toString() 方法。 toString() 应返回 Cruiser 的 x、y 和速度。

当我编译它时,它说“Cruiser 类是公共(public)的,应该在 Cruiser.java 中声明”

当我这样做时,我的 IDE 会显示“;”正如公共(public) boolean 等于后的预期。但这没有意义为什么你需要在方法中使用分号。

这就是我目前所拥有的

 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;
}
}
}

最佳答案

这就是 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 个属性 xy,并且
在它的 equals 方法中它正在比较它们。

另请参阅:

java.awt.Point.equals

关于java - Ap 计算机科学 Java 接口(interface)和 Compare 方法困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com