Java 错误解释困难
我收到一个错误Java 错误解释困难,java,arrays,interface,Java,Arrays,Interface,我收到一个错误“Octagon类型必须实现继承的抽象方法Comparable.compareTo(Octagon)”不确定这到底意味着什么或如何修复它。我非常感谢你的帮助 代码如下: public class Problem13_11 { public static void main(String[] args) { Octagon Octagon1 = new Octagon(5); Octagon Octagon2 = (Octagon)Octagon1.c
“Octagon类型必须实现继承的抽象方法Comparable.compareTo(Octagon)”
不确定这到底意味着什么或如何修复它。我非常感谢你的帮助
代码如下:
public class Problem13_11 {
public static void main(String[] args) {
Octagon Octagon1 = new Octagon(5);
Octagon Octagon2 = (Octagon)Octagon1.clone();
System.out.println("Compare Octagon1 and Octagon 2" + (Octagon1.compareTo(Octagon2)));
System.out.println("Does Octagon1 equal Octagon 2?" + Octagon1.equals(Octagon2));
}
}
class Octagon extends GeometricObject implements Comparable<Octagon>,Cloneable{
private double side;
public Octagon() {
side = 0;
}
public Octagon(double side) {
this.side = side;
}
public double getSide() {
return side;
}
public void setSide() {
this.side = side;
}
public double getArea() {
return (2 + 4/ Math.sqrt(2) * side * side);
}
public double getPerimeter() {
return side * 8;
}
public Object clone() {
Object o;
o = clone();
return o;
}
@Override
public boolean equals(Object o) {
return o instanceof Octagon && getArea() == ((Octagon)o).getArea();
}
interface Cloneable{
public void clone();
}
interface Comparable{
public void compareTo();
}
}
公共类问题13\u 11{
公共静态void main(字符串[]args){
八角形八角形1=新八角形(5);
八角形八角形2=(八角形)八角形1.clone();
System.out.println(“比较八角形1和八角形2”+(八角形1.compareTo(八角形2));
System.out.println(“八角1等于八角2吗?”+Octagon1.equals(Octagon2));
}
}
类Octagon扩展了GeometricObject实现了可比较、可克隆的{
私人双边关系;
公共八角形(){
边=0;
}
公共八角形(双面){
这个边=边;
}
公共双getSide(){
返回侧;
}
公共void setSide(){
这个边=边;
}
公共区域(){
返回(2+4/数学sqrt(2)*边*边);
}
公共双边界{
返回侧*8;
}
公共对象克隆(){
对象o;
o=克隆();
返回o;
}
@凌驾
公共布尔等于(对象o){
返回八边形的o实例(&getArea()==((八边形)o).getArea();
}
界面可克隆{
公共空克隆();
}
界面可比{
公共无效比较();
}
}
我的目标是编写一个实现可比较和可克隆接口的类。我相信我已经完成了所有这些,但是我出于某种原因得到了这个错误。您需要能够将两个八角形对象相互比较,因此为了做到这一点,您实现了Comparable,这反过来意味着您必须实现public int compareTo(八角形八角形)方法。如果说您实现了,那么您就接受了这样一个合同,即您将实现Compariable定义的每个方法。在本例中,方法public int compareTo(八角形-八角形)
public int compareTo(八角形或八角形)
{
if(this.getArea()==octangon.getArea())
返回0;
else if(this.getArea()
由于八角形是等边形,您可以简单地比较八角形对象的区域它告诉您要做什么,您必须实现一个名为compareTo(Octagon)的方法,该方法返回一个int,检查一个简单的示例您需要向Octagon类添加一个compareTo()方法。可能重复^不同的方法,但同样的问题。您声明了
实现了Comparable
,但实际上并没有提供compareTo
方法。更好的答案。通常我看到if(this==otherOctagon)返回0代码>短路如果两个测试是同一个对象,可能会更昂贵的测试。(想象一下,如果.getArea()在计算上很昂贵)
public int compareTo(Octagon otherOctagon)
{
if(this.getArea() == octangon.getArea())
return 0;
else if(this.getArea() < octangon.getArea())
return -1;
else
return 1;
}