안녕하세요, 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;
}
}
}
편집 : 뭔가를 잊고 있었다 감사합니다 : 원 추상하지 않고 오버라이드 (override)하는하지 않는 추상적 인 방법은 compareTo 내가 내려받은 것을 지금에 도움을 대등
감사에서 (객체) 시도는
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)
어떤 오류가 발생하는지에 대한 자세한 정보가 유용 할 것입니다. –
'Circle extends Shape이 구현 한 클래스'로 선언해야합니다.'. 또한 [Java에서 문자열을 비교하는 방법?] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)을 읽으십시오. 또한 현재 구현 된 것처럼 _smaller_ 원에 필요한 음의 반환 값은 절대 존재하지 않습니다. –
jlordo