Привет, у меня возникли проблемы с реализацией метода compareTo. Я искал ответы, но ничто не помогло. Я пытаюсь заполнить TreeSet различными кругами. Мне нужно compareTo в моем классе круга, чтобы иметь возможность хранить их таким образом.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;
}
}
}
Edit: Спасибо, я забывала что-то: Круг не является абстрактным и не overide абстрактный метод CompareTo (Object) в сравнимых
Спасибо за помощь в том, что теперь, когда я получил вниз тестирования класса, при попытке добавить круг в TreeSet это исключение выскакивает любые идеи,
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)
Было бы полезно с дополнительной информацией о том, какие ошибки вы получите. –
Вам нужно объявить его как 'class Circle extends Shape реализует Comparable'. Также читаем [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-compare-strings-in-java). Кроме того, как в настоящее время реализовано, никогда не будет отрицательного возвращаемого значения, которое необходимо для кругов _smaller_. –
jlordo