It should work better, but first please check your implementation of method calculatevolume
weather that might return 0.
And please provide argument to comparable interface public abstract class Figure implements Comparable<Figure>
Figure circle = new Circle();
Figure square = new Square();
circle.compareTo(square);
public int compareTo(Figure a) {
if (this.calculatevolume() > a.calculatevolume())
return (int)this.calculatevolume();
else if (this.calculatevolume() < a.calculatevolume())
return (int) a.calculatevolume();
return 0;
}