OOP mit compareTo Array sortieren (aus zwei Klassen)

Dundee

Neues Mitglied
Hallo zusammen

Ich bin neu hier im Forum und weiss wahrscheinlich noch nicht so wies läuft hier…
Hab mich hier angemeldet da ich ein java newbie bin und etwas hilfe gut gebrauchen könnte… habe google und die SuFu schon konsultiert, jeodch fand ich leider nichts, was irgendwie passte...

Habe folgendes problem:
Klasse Person (name, vorname, adresse)
Klasse Adresse (strasse, nr, plz, ort, land)

Es geht in einer aufgabe darum, mittels der Schnittstelle comparable und der methode compareTo() eine Ausgabe nach person und adresse zu sortieren. Mein problem ist nun, dass eigentlich beide Sortieralgorithmen für sich alleine funktionieren, jedoch funktioniert die Kombination nicht.

Es ist verlang, dass die objekte (person mit zugehöriger adresse) in einam array abgelegt werden und mit bubblesort wieder sortiert ausgegeben werden.

hier die methode main: hier passiert der bublesort, wobei auf die Klass Person zugegriffen wird, welche wiederum auf die klasse adresse zugreift...

Java:
    public static void main(String[] args)
    {
        Adresse a1 = new Adresse("Buchholzstrasse", 2, 6314, "Unterägeri", "C");
        Adresse a2 = new Adresse("Ahornstrasse", 45, 4567, "Freakingen",
                "Deutschland");
        Adresse a3 = new Adresse("Cucumberstrasse", 7, 6315, "Oberägeri", "CH");
        Adresse a4 = new Adresse("Buchholzstrasse", 2, 6314, "Unterägeri", "B");
        Adresse a5 = new Adresse("Buchholzstrasse", 2, 6314, "Unterägeri", "A");
        Adresse a6 = new Adresse("Furzheimstrasse", 666, 1999, "Silicon Valley", "USA");

        Person[] arr = new Person[10];

        arr[0] = new Person("Berta", "Bollwerk", a5);
        arr[1] = new Person("Cedric", "Cermeno", a6);
        arr[2] = new Person("Arnold", "Dundee", a4);
        arr[3] = new Person("Gustav", "Dösenbröt", a1);
        arr[4] = new Person("Alexander", "Donders", a2);
        arr[5] = new Person("Alexander", "Donders", a5);
 
        Person temp = new Person();

        for (int s = 0; s < 10; s++)
        {

            for (int i = 0; i < arr.length - 1; i++)
            {
                if ((arr[i] != null) && (arr[i + 1] != null))
                {
                    int res = arr[i].compareTo(arr[i + 1]);

                    if (res > 0)
                    {
                        temp = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = temp;
                    }
                }
            }
        }

        showArr(arr);

    }

    public static void showArr(Person[] arr)
    {
        for (int i = 0; i < arr.length; i++)
        {
            System.out.println(arr[i]);
        }
    }
}


AUSSCHNIT AUS KLASSE PERSON
Java:
     public int compareTo(Person person)
    {
        int cName = this.name.compareTo(person.name);
        int cVorname = this.vorname.compareTo(person.vorname);
        int cAdresse = this.adresse.compareTo(adresse);

        if (cVorname == 0)
        {
            return cName;
        }
        else if ((cVorname == 0) && (cName == 0))
        {
            return cAdresse;
        }
        else
        {
            return cVorname;
        }

    }



Aussschnitt aus adresse:
Java:
public int compareTo(Adresse adresse)
    {
        int cStrasse = this.strasse.compareTo(adresse.strasse);
        int cOrt = this.ort.compareTo(adresse.ort);
        int cLand = this.land.compareTo(adresse.land);

        if (cStrasse == 0)
        {
            return this.nummer;
        }
        if (cOrt == 0)
        {
            return cLand;
        }

        else
        {
            return cStrasse;

        }

    }

wäre genial, wenn mir jemand helfen könnte. habe schon stunden damit verbranten, den fehler zu finden.... ich glaube, es ist nur ein klitze kleiner denkfehler...

gruss

dundee
 

nrg

Top Contributor
int cAdresse = this.adresse.compareTo(adresse);

vergleichst du da nicht das selbe attribut? müsste es nichte compareTo(person.adresse) heissen?

edit: ich würde vllt auch probieren den compareTo der alternativen Suchkriterien erst auszuführen wenn dein primäres Suchkriterium 0 liefert
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Du scheinst auch Allgemein Verständnisprobleme mit [c]return[/c] zu haben
Java:
        if (cVorname == 0)
        {
            return cName;
        }
        else if ((cVorname == 0) && (cName == 0))
        {
            return cAdresse;
        }

In dem Falle würde wenn die Vornamen gleich sind, direkt das Ergebnis aus dem Vergleich der Nachnamen zurückgegeben werden!! Ob diese auch gleich sind, überprüfst du gar nicht mehr, die Zeile [c]else if ((cVorname == 0) && (cName == 0))[/c] wird ja gar nicht mehr geprüft da du ja direkt 0 zurückgegeben hast(aus der Methode wird dann rausgegangen!)
D.h. prüfe lieber immer
if(cVorname != 0) return cVorname; //sind nicht gleich, daher brauch ich dne rest nicht testen!
else if(cName != 0 ) return cName;

usw.
 

Dundee

Neues Mitglied
aahaa :)

hehe, danke für den tipp. ja du hast völlig recht. manchmal denke ich noch etwas ins blaue.

der tipp mit dem != war super, das macht das ganze etwas leichter zu programmieren. mir scheint, als ob das Programm nun so funktioniert, wie ichs es möchte.

danke nochmals!

grusss

dundee!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
O compareTo nach mehreren Kriterien Java Basics - Anfänger-Themen 13
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
B Methoden compare() und compareTo() Java Basics - Anfänger-Themen 1
P compareTo() Java Basics - Anfänger-Themen 3
C compareTo verwenden Java Basics - Anfänger-Themen 2
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
J Sortier alternativen mit der compareTo Methode? Java Basics - Anfänger-Themen 6
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
K compareTo(String arg) überschreiben Java Basics - Anfänger-Themen 4
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
S compareTo() und equals() Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
K CompareTo zwei mal benutzen klappt nicht. Java Basics - Anfänger-Themen 2
1 HILFE! Strings mit CompareTo vergleichen Java Basics - Anfänger-Themen 3
R compareTo & equals Java Basics - Anfänger-Themen 10
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
J Probleme mit Comparable, compareTo() Java Basics - Anfänger-Themen 2
R compareTo Liste sortieren Java Basics - Anfänger-Themen 5
L compareTo bei Strings? Java Basics - Anfänger-Themen 4
T compareTo warum geht es nicht? Java Basics - Anfänger-Themen 2
W compareTo für 3 Strings Java Basics - Anfänger-Themen 11
M compareTo-Sortierungsproblem Java Basics - Anfänger-Themen 16
F compareTo - Sortierung nach 2 Argumenten Java Basics - Anfänger-Themen 10
G in compareTo umschreiben Java Basics - Anfänger-Themen 4
A Die "compareTo( )" methode Java Basics - Anfänger-Themen 16
J compareTo Java Basics - Anfänger-Themen 4
G compareTo Java Basics - Anfänger-Themen 12
T Wie geht das mit compareTo Java Basics - Anfänger-Themen 2
M o.compareTo(o) Java Basics - Anfänger-Themen 13
K compareTo in Verbinug mit Arrays.sort() Java Basics - Anfänger-Themen 4
Bierhumpen compareTo. Wie setze ich es ein Java Basics - Anfänger-Themen 11
R compareTo Java Basics - Anfänger-Themen 2
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben