Array mit Objekten sortieren

hmm meinst du so ungefähr:

public int compareTo(Object o) {

Student student2 = (Student) o;


if (this.getMatrikelnr().compareTo(student2.getMatrikelnr()) > 0) {
return 1;
} else if (this.getMatrikelnr().compareTo(student2.getMatrikelnr()) < 0) {
return -1;
}
return 0;
}

private String getMatrikelnr() {
return matrikelnr;
}
 
ich glaube er meint es genau so, wie er es geschrieben hatte.

Java:
public int compareTo(Object vergleich) 
{
   if (vergleich instanceof Student) 
   {
      return this.matrikelnr.compareTo(((Student)vergleich).getMatrikelnr());
   }
   return 0;
}

vorher solltest du aber prüfen, ob irgendeine matrikelnummer nicht null ist
 
Hä?

1.) Hab ich gar nix gemeint
2.) Hast du den oder zumindest nen ähnlichen Code schon gepostet
3.) Hab ich dir schon den logisch korrekten Code gegeben
4.) Hat das nix mit ner NullPointerException zu tun
5.) Die NullPointerException tritt vermutlich auf, weil die Martikelnummer = null ist.

[edit]Da war benhaze wohl schneller ...[/edit]
 
AAAAAAAAAAHHHHHHHHHHH

Das Array musste eine Größe von 10 haben, es wurden aber nur 6 Studenten eingegeben...

Wenn es eine größe von 6 hat funktioniert es einwandfrei ;-)


Vielen Dank The_S und den anderen
 
Zuletzt bearbeitet:
Das heißt aber noch lange nicht, dass deine Martikelnummern ungleich null sind.

Fakt ist: Mit Arrays.sort wird auch die compareTo-Methode aufgerufen. Ich schließe jetzt einfach mal aus, dass die Sun-Implementierung von Arrays.sort fehlerhaft ist. Deshalb muss der Fehler bei dir liegen

Möglichkeit 1:

Ein Array-Element ist null.

Lösung:

Jedes Element in deinem Array initialisieren

Möglichkeit 2:

Etwas in deiner compareTo-Methode ist null. "vergleich" kann es nicht sein, da sonst instanceof nicht "true" zurückliefern würde. Das aufrufende Objekt kann es auch nicht sein, da sonst "Möglichkeit 1" zutreffen würde. Bleibt nur noch die Martikelnummer eines Studenten übrig.

[edit]Und schon wieder zu spät ...[/edit]
 
Yep, wie gesagt, wir mussten das Array mit 10 Feldern erzeugen und haben damals nur 6 Studenten eingegeben. Wenn ich das ändere klappt alles. Aber auf das muss man mal kommen... Ich dachte immer der Fehler liegt irgendwo in der compareTo-Methode

Danke dir vielmals
 
Das war so vorgabe damals, das Array musste 10 Felder haben, und die Daten der 6 Studenten bekamen wir vorgegeben. Die letzten 4 Felder blieben leer.

Jetzt sollten wir das ganze eben sortieren. ich fürchte da hat unser Prof nicht ganz aufgepasst, und ich hab nicht daran gedacht. Habs jetzt angepasst und läuft einwandfrei!


PS: Den Link hab ich mittlerweile oben in der Lesezeichen-zeile^^
 
Zurück