Lösungsvorschlag: Spezialmethoden

     // TODO 1: Ergänzen Sie den Datentyp Boot um eine toString()-Methode, geben Sie darin alle Attribute aus.
 
     /**
     * Fügt alle Attribute einem String hinzu
     * @return Gibt diesen String zurück
     */
     @Override
     public String toString() {
         return "Boot{" +
                 "Marke='" + marke + '\'' +
                 ", Farbe='" + farbe + '\'' +
                 ", Kaufpreis=" + kaufpreis +
                 ", Seriennummer='" + seriennummer + '\'' +
                 ", imWasser=" + (imWasser?"Ja":"Nein") +
                 '}';
     }
 
 
        // TODO 2: Passen Sie die Ausgabe an, dass nicht mehr printInfos() verwendet wird, sondern die toString() Methode
 
        for (Boot b : boote) {
            System.out.println(b);
        }
 
// TODO 4: Machen Sie das Boot vergleichbar. Vergleichen Sie die Boote nach deren Kaufpreis.
public class Boot implements Comparable<Boot>{
 
    ...
 
 
	/**
	* Boot vergleichbar machen.
	* @param o anderes Boot
	* @return - wenn dieses günstiger, 0 bei gleich teuer, + wenn dieses teurer
	*/
	@Override
	public int compareTo(Boot o) {
		return (int)(kaufpreis - o.getKaufpreis());
	}
 
}
 
// TODO 5: Sortieren Sie die Boote nach ihrem Preis.
Collections.sort(boote);
 
// TODO 6: Geben Sie die Liste der Boote hier aus.
for (Boot b : boote) {
    System.out.println(b);
}
@Override
public int compareTo(Boot o) {
    return (int)(kaufpreis - o.getKaufpreis());
}

Was passiert hier? Wir vergleichen den Kaufpreis von zwei Booten. Ist dieses Boot teurer wie das Boot o so muss eine positive Zahl zurückgegeben werden. Ist also der kaufpreis 100'000 und o.getKaufpreis() ist 80'000 ist das Resultat 20'000, also eine positive Zahl. Genau so funktioniert es auch anders herum, versuchen Sie es aus!

(int)(kaufpreis - o.getKaufpreis());

Die Methode compareTo muss ein int zurückgeben, da der Kaufpreis ein double ist, und das Resultat der Berechnung auch ein double ist muss das Resultat in ein int gecastet (Typumwandlung) werden. Mehr Infos zu Typumwandlungen finden Sie hier.

  • modul/archiv/m319/learningunits/lu08/loesungen/spezialmethoden.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1