Die Instanzen einer Java-Klasse Person enthalten Daten über Personen.
Die Klasse soll das Interface Comparable<Person> so implementieren, dass Personen durch die Methode compareTo(...) nach Wohnort, Name, Vorname (in dieser Rangfolge) geordnet werden (also so ähnlich wie in einem gedruckten Telefonbuch).
(In SQL würden Sie schreiben „... order by wohnort, name, vorname ...“).
Um Strings zu vergleichen / ordnen sollen Sie die Tatsache benützen, dass die Java-Klasse String das Interface Comparable<String> implementiert.
Schreiben Sie die Methode compareTo(...) der Klasse Person.
public class Person implements Comparable<Person> {
private String wohnort, name, vorname;
...
}
Das Interface Comparable<T> ist gemäss JDK-Help so definiert:
public interface Comparable<T> { public int compareTo(T o); }
Die Klasse String ist gemäss JDK-Help so definiert:
public final class String extends Object implements Comparable<String> ...
> Würde meine Lösung für 'nur Wohnort' überhaupt stimmen? Gibt das bischen Code 12 Punkte?
warum tippst du das nicht mal in einen Texeditor ein und lässt den Compiler ran?
ich sehe zwei Fehler
geschätzte Punktzahl: 1,5
> Wie muss ich vorgehen, wenn ich mehrere Argumente vergleichen möchte?
wenn keines der beiden if (falls sie mal korrekt werden) erfüllt ist,
dann sind die Wohnorte offensichtlich gleich,
die Operation wurde noch nicht beendet,
statt nun return 0; auszuführen weiter das nächste Attribut vergleichen
public int compareTo(Person p) {
int result = 0; // Hilfsvariable
// zuerst den Wohnort vergleichen (Ich nehme für alle Vars mal den Typ String an)
result = this.wohnort.compareTo(p.wohnort);
if (result != 0) return result; // nicht gleich, also gib result zurück
// dann den Namen vergleichen (Ich nehme für alle Vars mal den Typ String an)
result = this.name.compareTo(p.name);
if (result != 0) return result; // nicht gleich, also gib result zurück
// zuletzt den Vornamen vergleichen (Ich nehme für alle Vars mal den Typ String an)
result = this.vorname.compareTo(p.vorname);
if (result != 0) return result; // nicht gleich, also gib result zurück
// alles gleich, also 0 zurückgeben
return 0;
}
Tipp in diesem absurden Gespräch, was dir eigentlich auf Jahre jeden Punkt verbieten sollte:
in der Aufgabenstellung ist erklärt, wie man Strings vergleicht,
etwas tricky, aber eindeutig beschrieben
edit: oder Lernen/ Denken einstellen und fertige Lösung abschreiben.. siehe LR
wobei noch zu klären ist, ob am Ende in die richtige Richtung sortiert wird (A-Z oder Z-A)
Tipp in diesem absurden Gespräch, was dir eigentlich auf Jahre jeden Punkt verbieten sollte:
in der Aufgabenstellung ist erklärt, wie man Strings vergleicht,
etwas tricky, aber eindeutig beschrieben
edit: oder Lernen/ Denken einstellen und fertige Lösung abschreiben.. siehe LR
wobei noch zu klären ist, ob am Ende in die richtige Richtung sortiert wird (A-Z oder Z-A)
Das ist dann die Zusatzaufgabe.
Und wenn ich sehe, wie er/sie sich hier vorgetastet hat, ohne wahrscheinlich je mal eine Zeile Code kompiliert / ausprobiert zu haben, dann wird das wohl ohne fremde Hilfe eine nahezu unlösbare Aufgabe
Tipp in diesem absurden Gespräch, was dir eigentlich auf Jahre jeden Punkt verbieten sollte:
in der Aufgabenstellung ist erklärt, wie man Strings vergleicht,
etwas tricky, aber eindeutig beschrieben
edit: oder Lernen/ Denken einstellen und fertige Lösung abschreiben.. siehe LR
wobei noch zu klären ist, ob am Ende in die richtige Richtung sortiert wird (A-Z oder Z-A)
Auch wenn ich jetzt das Lernen/Denken einstelle und die fertige Lösung von LR abschreibe, stellen sich mir Fragen:
Wenn LR in seinem Code ja innerhalb der Methode compareTo sich selber aufruft, ist das ja Rekursion. Aber im Methodenkopf steht das compareTo(Person p), und LR übergibt danach aber nur einen String z.B. p.wohnort. Wie geht das auf?