gpt4 book ai didi

java - CompareTo() 实现问题

转载 作者:行者123 更新时间:2023-12-01 23:39:28 30 4
gpt4 key购买 nike

您好,我在实现compareTo 方法时遇到问题。我一直在寻找答案,但没有任何帮助。我正在尝试用各种大小的圆圈填充 TreeSet。我需要在我的圈子类中使用compareTo 才能以这种方式存储它们。

import java.util.*;
import java.lang.*;

abstract class Shape
{
private String name; //e.g."circlel", "rectangle3"

Shape(String name0)
{
name = name0;
}

abstract double area (); // area of shape

abstract double perim(); // length of perimeter of shape

void put()
{ // display shape details
System.out.println(name + " with area " + area()
+ " and perimeter " + perim() );
}
}

class Circle extends Shape implements Comparable
{
private static String name;
private int radius;

Circle(String n, int r)
{
super(n);
radius = r;
}

public double area()
{
return Math.PI * radius * radius;
}

public double perim()
{
return 2 * Math.PI * radius;
}

public int compareTo(Circle c)
{
if(c.name == name && c.radius == radius)
{
return 0;
}
else
{
return 1;
}
}
}

编辑:谢谢,我忘记了一些事情: Circle 不是抽象的,并且不会覆盖 Comparable 中的抽象方法compareTo(Object)

感谢您的帮助,现在我已经开始测试该类,当尝试向树集中添加一个圆圈时,此异常会弹出任何想法,

Exception in thread "main" java.lang.NullPointerException
at Circle.compareTo(Shape.java:47)
at Circle.compareTo(Shape.java:23)
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at CircleTreeSet.main(CircleTreeSet.java:24)

最佳答案

在此方法中您永远不会返回 -1。如果其中一个圆与另一个圆相比“更大”,则该圆应返回 1,而另一个圆与较大圆相比应返回 -1。您必须确保您的圈子遵循传递属性和其他一些准则。

看看this reference to the compareTo() .

关于java - CompareTo() 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18174791/

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