Ich muss die Methode compareTo() implementieren , Anscheinend ist es nicht richtig, was ich geschrieben habe ! Kann jemand bitte mir dabei helfen ?
Um eine eigene Sortierreihenfolge vorzugeben, sollte die Klasse Buch das Java-eigene Interface Comparable<Buch> implementieren.1 Das Interface deklariert lediglich eine Methode compareTo(Buch b), die einen int zurückgibt.
Das erwartete Verhalten der Methode compareTo ist im Methodenkommentar definiert. Deine Implementation soll die dort genannten Anforderungen erfüllen.
die Anforderung :
class Buch :
Um eine eigene Sortierreihenfolge vorzugeben, sollte die Klasse Buch das Java-eigene Interface Comparable<Buch> implementieren.1 Das Interface deklariert lediglich eine Methode compareTo(Buch b), die einen int zurückgibt.
Das erwartete Verhalten der Methode compareTo ist im Methodenkommentar definiert. Deine Implementation soll die dort genannten Anforderungen erfüllen.
die Anforderung :
Code:
/**
Die Methode folgt dem im Interface Comparable
beschriebenen Verhalten.
Wird die Methode an Buch a aufgerufen und Buch b übergeben,
gilt für den Rückgabewert n:
n < 0, wenn a in der Reihenfolge vor b steht
n > 0, wenn a in der Reihenfolge nach b steht
n == 0, wenn a und b für die Sortierung als
gleich zu betrachten sind
Die Methode ist transitiv (a < b < c => a < c)
und das Vorzeichen symmetrisch (a < b => b > a).
Die Methode muss den Fall null nicht behandeln.
Sie implementiert die von der Kundin gewünschte Sortierreihenfolge.
Je länger ein Buch in der Sammlung ist, desto
früher steht es in der Liste.
Zwischen Büchern, die im gleichen Jahr angeschafft wurden,
wird aufsteigend nach der ISBN sortiert.
*/
public int compareTo(Buch b)
{
if(this.gibKaufjahr()- b.gibKaufjahr()==0){
return (int) this.gibISBN()-b.gibISBN();
}
return this.gibKaufjahr()- b.gibKaufjahr();
}
Java:
public class Buch implements Comparable<Buch>
{
private final long _isbn;
private final String _autor;
private final String _titel;
private final int _preis;
private final int _kaufjahr;
/**
* Erzeugt ein Buch, welches der Sammlung hinzugefuegt
* werden soll.
*
* @param isbn ISBN des Buches
* @param autor Autor:in des Buches
* @param titel Titel des Buches
* @param preis Preis in Eurocent, zu dem das Buch
* gekauft wurde
* @param kaufjahr Jahr, in dem das Buch gekauft wurde
*/
public Buch (long isbn, String autor, String titel,
int preis, int kaufjahr)
{
_isbn = isbn;
_autor = autor;
_titel = titel;
_preis = preis;
_kaufjahr = kaufjahr;
}
/**
* Gibt die ISBN des Buches zurueck.
* @return ISBN
*/
public long gibISBN()
{
return _isbn;
}
/**
* Gibt die Autor:in des Buches zurueck.
* @return Autor:in des Buches
*/
public String gibAutor()
{
return _autor;
}
/**
* Gibt den Titel des Buches zurueck.
* @return Titel des Buches
*/
public String gibTitel()
{
return _titel;
}
/**
* Gibt den Preis zurueck, zu dem das Buch gekauft wurde.
* @return Kaufpreis in Eurocent
*/
public int gibPreis()
{
return _preis;
}
/**
* Gibt das Jahr zurueck, in dem das Buch gekauft wurde.
* @return Kaufjahr
*/
public int gibKaufjahr()
{
return _kaufjahr;
}
// hier wird dein Code eingefügt
}