Hallo,
ich wollte wieder mal etwas für die Uni programmieren und bin dabei auf folgendes Problem gestoßen:
Erstmal die Aufgabenstellung kurz und knackig: Es geht um ein Array welches Objekte (in dem Fall ausgeliehene Bücher enthält). Zu diesem Array kann man Bücher hinzufügen oder entfernen. Die Größe des Arrays wird übergeben und im Konstruktur erzeugt. Klassen gibt es folgende:
Book (Das Buch-Objekt mit Autor , Titel und Jahr)
BorrowedBooks (Die Klasse in welchem das Array erzeugt wird und die Funktionen implementiert sind)
Jetzt haben wir außerdem eine Sort.java Klasse in welcher die Methode quickSort(Compareable[] buf) ist, die das Array ordnen soll.
Meine Book.java Klasse implementiert das Interface Comparable und überschreibt die Methode compareTo().
Hier jeweils der Code:
Comparable.java
Book.Java
Hier die Sort.java mit quickSort Methode
Wenn ich jetzt allerdings in der Klasse BorrowedBooks in der void sort() Methode folgendes Aufrufe:
- borrowedBooks ist das Array mit den Buch-Objekten..
Kommt folgende Fehlermeldung:
Habe mir das Beispiel in der FAQ angesehen, aber konnte keinen Fehler feststellen. Mit "java.util.Array.sort(borrowedBooks)" kommt kein Fehler, aber wir sollen eben die quickSort Methode verwenden.
Bin für jede Hilfe dankbar!
ich wollte wieder mal etwas für die Uni programmieren und bin dabei auf folgendes Problem gestoßen:
Erstmal die Aufgabenstellung kurz und knackig: Es geht um ein Array welches Objekte (in dem Fall ausgeliehene Bücher enthält). Zu diesem Array kann man Bücher hinzufügen oder entfernen. Die Größe des Arrays wird übergeben und im Konstruktur erzeugt. Klassen gibt es folgende:
Book (Das Buch-Objekt mit Autor , Titel und Jahr)
BorrowedBooks (Die Klasse in welchem das Array erzeugt wird und die Funktionen implementiert sind)
Jetzt haben wir außerdem eine Sort.java Klasse in welcher die Methode quickSort(Compareable[] buf) ist, die das Array ordnen soll.
Meine Book.java Klasse implementiert das Interface Comparable und überschreibt die Methode compareTo().
Hier jeweils der Code:
Comparable.java
Java:
public interface Comparable {
int compareTo(Object o);
}
Book.Java
Java:
public abstract class Book implements Comparable{
private String author;
private String title;
private int year;
......
....
..
@Override
public int compareTo(Object o){
if(o instanceof Book){
Book b = (Book) o;
if(this.title.compareTo(b.title)== 0){
if(this.author.compareTo(b.author)== 0){
if(this.year > b.year){
return 1;
}else if(this.year < b.year){
return -1;
}else{
return 0;
}
}else{
return this.author.compareTo(b.author);
}
}
return this.title.compareTo(b.title);
}
else return 0;
}
Hier die Sort.java mit quickSort Methode
Java:
public class Sort {
@SuppressWarnings({ "rawtypes", "unchecked" })
private static void quickSort(Comparable[] buf, int lo, int hi) {
assert(lo >= 0 && lo <= hi && hi < buf.length);
Comparable pivot = buf[ (lo+hi) / 2 ];
int l = lo, r = hi;
while (l <= r) {
while (buf[l].compareTo(pivot) < 0) {
l++;
}
while (buf[r].compareTo(pivot) > 0) {
r--;
}
if (l <= r) {
Comparable tmp = buf[l];
buf[l] = buf[r];
buf[r] = tmp;
l++;
r--;
}
}
if (r > lo) {
quickSort(buf, lo, r);
}
if (l < hi) {
quickSort(buf, l, hi);
}
}
/**
* Sort the given array in-place in ascending order.
* @param buf reference to the array
*/
@SuppressWarnings("rawtypes")
public static void quickSort(Comparable[] buf) {
if (buf.length > 1) {
quickSort(buf, 0, buf.length-1);
}
}
}
Wenn ich jetzt allerdings in der Klasse BorrowedBooks in der void sort() Methode folgendes Aufrufe:
Java:
Sort.quickSort(borrowedBooks);
- borrowedBooks ist das Array mit den Buch-Objekten..
Kommt folgende Fehlermeldung:
Code:
no suitable method found for quickSort(simplelibrary.Book[])
method simplelibrary.util.Sort.quickSort(java.lang.Comparable[]) is not applicable
(actual argument simplelibrary.Book[] cannot be converted to java.lang.Comparable[] by method invocation conversion)
method simplelibrary.util.Sort.quickSort(java.lang.Comparable[],int,int) is not applicable
(actual and formal argument lists differ in length)
Habe mir das Beispiel in der FAQ angesehen, aber konnte keinen Fehler feststellen. Mit "java.util.Array.sort(borrowedBooks)" kommt kein Fehler, aber wir sollen eben die quickSort Methode verwenden.
Bin für jede Hilfe dankbar!