# Problem mit ArrayList?  (Einfache Buchverwaltung)



## Sebbo (1. Mai 2007)

Hallo,

da ich alleine nicht weiterkomme hoffe ich das mir hier jemand helfen kann.
Ich habe die unten folgenden 2 Klassen Buch und Buchverwaltung.
Das Problem ist, wenn ich (via BlueJ) in der Klasse Buchverwaltung ein neues Objekt erstelle und dort die Methode buchHizufügen aufrufe...irendwie funktioniert die "Verknüpfung" der beide Klassen nicht!
Aber wie mache ich das, bzw. was fehlt!
Schon mal vielen Dank...ich verzweifele langsam 
Gruß Sebbo



```
public class Buch
{
    
    //Datenfeld titel wird definiert
    private String titel;
    //Datenfeld isbn wird definiert    
    private String isbn;
    //Datenfeld jahr wird definiert
    private int jahr;
    
    // Konstruktor mit 3 Parametern erstellt und denen Werte zugewiesen
    public Buch(String buchTitel, String buchIsbn, int buchJahr)
    {
       titel=buchTitel;
       isbn=buchIsbn;
       jahr=buchJahr;
    }
    //  Methoden zu den Datenfeldern, welche die Werte zurückliefern
    public String gibTitel()
    {
        return titel;
    }
    
    public String gibIsbn()
    {
        return isbn;
    }
    
    public int gibJahr()
    {
        return jahr;
    }
    
     Methode die Titel, ISBN und Jahr ausgibt
    public void ausgeben()
    {
        System.out.println(""  + titel +", " +isbn +" "  +"("+jahr +")" ) ;  
       
    }

}

//--------Klasse Buchverwaltung---------
import java.util.ArrayList;
 
public class Buchverwaltung {
    
   
    //Datenfeld buchsammlung erzeugt, mit Verweismöglichkeit auf Objekte vom Typ Buch
    public ArrayList<Buch> buchsammlung;
    
    public Buchverwaltung()
    {
     buchsammlung = new ArrayList<Buch>();
    }

    // Methode die Anzahl der in buchsammlung gespeicherten Objekte wiedergibt
    public int anzahlBuecher()
    { 
    return buchsammlung.size();
    }
    
     //Methode, die neu erzeugtes Buch der Sammlung Buchverwaltung hinzufügt
    
    public void buchHinzufügen(Buch buch)
    {
    buchsammlung.add(buch);
    }
    
}
```


----------



## SlaterB (1. Mai 2007)

> irendwie funktioniert die "Verknüpfung" der beide Klassen nicht! 
Schrott
> Aber wie mache ich das, bzw. was fehlt! 
genauso unnütz 

Compilierfehler, Exceptions, fehlendes Verhalten konkret beschreiben!
bisher ist deine Info gleich 0

Quellcode!

-----

überhaupt:
> wenn ich (via BlueJ) in der Klasse Buchverwaltung ein neues Objekt erstelle 

wußte gar nicht das BlueJ per Zauberhand mit Java-Klassen jongliert?,
wenn man 'Objekte erstellt', dann doch normalerweise indem man Code in eine Java-Datei schreibt?


----------



## Sebbo (1. Mai 2007)

Ja, Sorry für die unverständliche Ausdrucksweise...bin halt blutiger Anfänger!
Wenn ich die Methode buchHinzufügen aufrufe und dann etwas eingebe bekomme ich immer die Fehlermeldung: incompatible Types -found int but excepted buch.
Gebe ich Buchstaben ein, kommt natürlich found String but excepted buch...etc.
Meiner Meinung nach greift die ArryList nicht auf die Klasse Buch, bzw. das Objekt buch zu, da man in der Methode buchHinzufügen nur einen Wert eingeben kann, Buch aber ja die 3 Werte Titel, ISBN und Jahr hat! 

Ist mein erstes Programm mit ArrayList, hab also echt nicht viel Ahnung wie das laufen soll.....

Hoffe das hilft etwas weiter!
Freue mich über hilfreiche Hinweise!


----------



## SlaterB (1. Mai 2007)

wenn du eine Zeile
int x = 3;
list.buchHinzufügen(x);
hast, dann schreibe sie doch hierhin, 
macht vieles deutlicher, aber im Text hast du das ja nun auch mehr aus ausreichend beschrieben, Lob 

also das ist ganz einfach:
in dieListe  kann nur ein Buch kein, ein int, kein String und auch sonst keine Olivendose,
nur Bücher,

wenn du also
int x = 3;
oder
String name = "Titel"
hast,
dann kommen die nicht in Liste rein, wieso auch?

aber wenn du ein Buch hast oder schnell zusammenbaust:
Buch buch = new Buch("...","...", 1996);
na dann hast du ein Buch, denn ein Buch ist Buch und keine Tomate sondern ein Buch ,

ein Buch darf in die Liste, in die Bücherliste
list.buchHinzufügen(buch);
geht, war nicht schwer


----------



## Sebbo (3. Mai 2007)

OK, das hab hinbekommen! 
DANKE!!!
Nächstes Problem ist, alle Bücher mit dem gleichen Jahr sollen ausgegeben werden! 
Meine Idee:
public void gibAusFuerJahr(int jahr)
    {
        if (jahr == jahr)
        {
        System.out.println(buchsammlung.get(jahr));

    }

tuts net
Weiß leider mal wieder nicht weiter!
Danke& gruß
Sebbo


----------



## SlaterB (3. Mai 2007)

> if (jahr == jahr) 
macht keinen Sinn, was soll diese Zeile bewirken?

> buchsammlung.get(jahr); 

dürfte höchstens ein Buch an der POSITION jahr bringen, also auch wenig hilfreich

-----

Vorgehen:
alle Bücher durchlaufen (Schleife, get), von jedem Buch das Jahr anschauen 
und dann ausgeben wenns passt


----------



## Sebbo (3. Mai 2007)

Wie frage ich denn ab, welches Buch/Jahr ich haben will...und was für eine Art von Schleife sollte ich benutzen?!
Ich hab bislang sowas:
public void gibAusFuerJahr(int jahr)
    {
        for (Buch buch :  buchsammlung)
        {

        System.out.println(buch);

    }

Meiner Meinung nach fehlt jetzt nur noch die Abfrage der jahre in der for-Schleife, oder?!

Danke & Gruß
Sebbo


----------



## SlaterB (3. Mai 2007)

if (buch.gibJahr() == jahr) {
}

??


----------

