Hallo zusammen, bräuchte mal wieder etwas Hilfe bei einer Aufgabe.
Ich habe eine abstrakte Klasse "Figur" und zwei Subklassen "Rechteck" und "Kreis", welche von Figur erben. Nun soll ich einen in der Klasse Figur eine Schnittstelle "Comparable" implementieren, so dass sich die Objekte nach Größe der Fläche sortieren lassen.
Die Oberklasse und Unterklasse habe ich soweit, doch meine Sortierung sieh irgendwie hässlich aus..
In Zeile 18 und 19 meiner main-Methode wird mir nur eine 1 oder -1 ausgespuckt. Ich würde gerne eine ordentliche Sortierung haben...
Ich habe eine abstrakte Klasse "Figur" und zwei Subklassen "Rechteck" und "Kreis", welche von Figur erben. Nun soll ich einen in der Klasse Figur eine Schnittstelle "Comparable" implementieren, so dass sich die Objekte nach Größe der Fläche sortieren lassen.
Die Oberklasse und Unterklasse habe ich soweit, doch meine Sortierung sieh irgendwie hässlich aus..
In Zeile 18 und 19 meiner main-Methode wird mir nur eine 1 oder -1 ausgespuckt. Ich würde gerne eine ordentliche Sortierung haben...
Java:
public abstract class Figur{
//Abstrakte Methoden
public abstract void zeichne();
public abstract double getFlaeche();
}
Java:
public class Kreis extends Figur implements Comparable<Figur> {
//Attribut
double radius;
//Konstruktor
Kreis(double radius) {
this.radius = radius;
}
@Override
public void zeichne() {
System.out.println("Der Radius beträgt " + this.radius + " und die Fläche beträgt " + this.getFlaeche());
}
@Override
public double getFlaeche() {
return Math.PI * this.radius * this.radius;
}
@Override
public int compareTo(Figur other) {
// if (this.getFlaeche() > other.getFlaeche())
// {
// return (int) this.getFlaeche();
// }
// return (int) other.getFlaeche();
return Double.compare(this.getFlaeche(), other.getFlaeche());
}
}
Java:
public class Rechteck extends Figur implements Comparable<Figur>{
double breite;
double hoehe;
Rechteck(double b, double h) {
this.breite = b;
this.hoehe = h;
}
@Override
public void zeichne() {
System.out.println("Die Breite beträgt: " + this.breite + " die Höhe beträgt: " + this.hoehe + " und die Fläche beträgt: " + this.getFlaeche());
}
@Override
public double getFlaeche() {
return this.breite * this.hoehe;
}
@Override
public int compareTo(Figur other) {
// if (this.getFlaeche() > other.getFlaeche())
// {
// return (int) this.getFlaeche();
// }
// return (int) other.getFlaeche();
return Double.compare(this.getFlaeche(), other.getFlaeche());
}
}
Java:
import java.util.Arrays;
public class main {
public static void main(String[] args) {
Kreis k1 = new Kreis(5.2);
Kreis k2 = new Kreis(8.9);
Rechteck r1 = new Rechteck(14,19);
Rechteck r2 = new Rechteck(45,99);
Rechteck r3 = new Rechteck(120,500);
System.out.println("Die Fläche von k1 beträgt: " + k1.getFlaeche());
k1.zeichne();
System.out.println("Die Fläche von r1 beträgt: " + r1.getFlaeche());
r1.zeichne();
System.out.println(r1.compareTo(k1));
System.out.println(k2.compareTo(r2));
// Rechteck[] rck = {r1,r2,r3};
//
// Arrays.sort(rck);
// System.out.println(rck);
}
}