Hallo zusammen!
Ich habe eine Klasse geschrieben, die das Comparable-Interface implementiert.
Der Vergleich soll über die Instanzvariable "klasse" geschehen, die folgende Werte annehmen kann: "Ia", "Ib", "IIa", "IIb", "IIIa", "IIIb", "IV", "V", "VI"
Da String ja die natürliche Ordnung implementiert hat müsste meiner Meinung nach folgendes gelten: "Ia" < "Ib" < "IIa" < "IIb" < "IIIa" < "IIIb" < "IV" < "V" < "VI".
Ich möchte das ganze dann über einen Bubblesort sortieren.
Hier mein Code:
Bubblesort:
Mein Hauptprogramm:
Doch es kommt nie der richtige Wert beim compareTo raus... Ich weiß nicht wo hier der Fehler ist.
Bei b1.compareTo(b2) kommt z.B. 0 heraus.
Es wäre schön, wenn mir jemand helfen kann
Ich habe eine Klasse geschrieben, die das Comparable-Interface implementiert.
Der Vergleich soll über die Instanzvariable "klasse" geschehen, die folgende Werte annehmen kann: "Ia", "Ib", "IIa", "IIb", "IIIa", "IIIb", "IV", "V", "VI"
Da String ja die natürliche Ordnung implementiert hat müsste meiner Meinung nach folgendes gelten: "Ia" < "Ib" < "IIa" < "IIb" < "IIIa" < "IIIb" < "IV" < "V" < "VI".
Ich möchte das ganze dann über einen Bubblesort sortieren.
Hier mein Code:
Java:
class Baumstamm
implements Comparable<Baumstamm>
{
private int nr;
private double länge;
private double durchmesser;
private String klasse;
private String güteKlasse;
private double festmeter;
public Baumstamm(int nr, double länge, double durchmesser, String klasse, String güteKlasse)
{
this.nr = nr;
this.länge = länge;
this.durchmesser = durchmesser;
this.klasse = klasse;
this.güteKlasse = güteKlasse;
festmeter = Math.round(Math.PI/4*durchmesser*länge*100)/100.;
}
public String getKlasse()
{
return klasse;
}
public int compareTo(Baumstamm b)
{
int i;
if((this.getKlasse()).compareTo(b.getKlasse()) == 1)
i = 1;
if((this.getKlasse()).compareTo(b.getKlasse()) == -1)
i = -1;
else
i = 0;
return i;
}
}
Bubblesort:
Java:
public void sort(Baumstamm[] arr)
{
boolean vertauscht = false;
for(int i = 1; i < arr.length; i++)
{
if(arr[i-1].compareTo(arr[i]) == 1)
{
Baumstamm temp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = temp;
vertauscht = true;
}
}
if(vertauscht == true)
{
sort(arr);
}
}
Mein Hauptprogramm:
Java:
public class Holzliste
public static void main(String[] args)
{
Baumstamm b1 = new Baumstamm(1, 4, 2, "IIa", "A");
Baumstamm b2 = new Baumstamm(1, 4, 2, "Ia", "A");
System.out.println(b1.compareTo(b2));
}
Doch es kommt nie der richtige Wert beim compareTo raus... Ich weiß nicht wo hier der Fehler ist.
Bei b1.compareTo(b2) kommt z.B. 0 heraus.
Es wäre schön, wenn mir jemand helfen kann
Zuletzt bearbeitet von einem Moderator: