Hallo 
Ich habe eine Hausaufgabe gestellt bekommen und soll ein Programm, dass, mittels eines HasKey Interfaces, Telefon-Objekt-Arrays sortieren kann, erweitern, sodass das ganze auch für "Studenten"-Objekte funktioniert.
Das habe ich, glaube ich, auch soweit alles richtig gemacht, nur bekomme ich es nicht hin, die Studenten nach der Matrikelnummer zu sortieren, die aber auch vom Typ int sein und mit "toString()" in einen String konvertiert werden soll.
Ich sollte vielleicht dazu sagen, dass das sortieren bei den Telefonbucheinträgen wunderbar funktioniert, weshalb ich vermute, dass es an meiner getKey()-Methode bei den Studenten liegt, aber ich komme einfach nicht drauf, wie ich das hinbekomme.
Vielen Dank schonmal für die Hilfe. Hier noch der Aufgabentext:
und das Programm:
Ich habe eine Hausaufgabe gestellt bekommen und soll ein Programm, dass, mittels eines HasKey Interfaces, Telefon-Objekt-Arrays sortieren kann, erweitern, sodass das ganze auch für "Studenten"-Objekte funktioniert.
Das habe ich, glaube ich, auch soweit alles richtig gemacht, nur bekomme ich es nicht hin, die Studenten nach der Matrikelnummer zu sortieren, die aber auch vom Typ int sein und mit "toString()" in einen String konvertiert werden soll.
Ich sollte vielleicht dazu sagen, dass das sortieren bei den Telefonbucheinträgen wunderbar funktioniert, weshalb ich vermute, dass es an meiner getKey()-Methode bei den Studenten liegt, aber ich komme einfach nicht drauf, wie ich das hinbekomme.
Vielen Dank schonmal für die Hilfe. Hier noch der Aufgabentext:
Erweitern Sie das Programm um eine Klasse "Student" mit 2 Attributen "matrikelnr" und "name", die ebenfalls das HasKey-interface implementiert, indem sie die Matrikelnummer des Studenten als Schlüsselwert (=Key=Sortierkriterium) benutzt. Außerdem soll Ihre Klasse "Student" eine "toString"-Funktion anbieten, um ein "Student"- Objekt in einen String zu konvertieren.
Erweitern Sie Ihre main-Funktion so, dass ein Array mit "Student"-Objekten angelegt wird und mit Hilfe der gegebenen "sort"-Funktion nach Matrikelnummern sortiert wird. (Sie sollen davon ausgehen, dass alle Matrikelnummern die gleiche Stellenanzahl haben, so dass Sie sie direkt in Strings konvertieren können.)
Lassen Sie das sortierte Array von "Student"-Objekten in der main-Funktion ausgegeben.
und das Programm:
Java:
public class Aufgabe1 {
public static void main (String [] args) {
Telefon [] telefonbuch = {
new Telefon("Peter", 12345),
new Telefon("Anna", 23753),
new Telefon("Rita", 12314),
new Telefon("Monika", 44117) };
sort(telefonbuch);
Student [] studenten = {
new Student(12345,"Anna"),
new Student(12343, "Rolf"),
new Student(12344, "Emma"),
new Student(12346, "Bob") };
sort(studenten);
ausgeben(telefonbuch);
System.out.println("-----------------------");
ausgeben(studenten);
System.out.println("-----------------------");
}
static void sort(HasKey [] arr) {
int left, min, test;
for(left = 0; left < arr.length-1; left++) {
min = left;
for(test = left+1; test < arr.length; test++) {
if(arr[test].getKey().compareTo(arr[min].getKey()) < 0)
min = test;
tausche(arr, min, left);
}
}
}
static void ausgeben(HasKey [] arr) {
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
static void tausche(HasKey [] arr, int l, int m) {
HasKey hilf = arr[l];
arr[l] = arr[m];
arr[m] = hilf;
}
}
interface HasKey {
String getKey();
}
class Student implements HasKey {
int matrikelnr;
String name;
Student(int mat, String n) {
matrikelnr = mat;
name = n;
}
public String getKey() {
return Integer.toString(matrikelnr);
}
public String toString() {
return "("+matrikelnr+" : "+ name + ")";
}
}
class Telefon implements HasKey {
String name;
int telefonnr;
Telefon (String n, int tel) {
name = n; telefonnr = tel;
}
public String getKey() {
return name;
}
public String toString() {
return "("+name+" : "+ telefonnr +")";
}
}