Problem mit ArrayList? (Einfache Buchverwaltung)

Status
Nicht offen für weitere Antworten.

Sebbo

Mitglied
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


Code:
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);
    }
    
}
 
S

SlaterB

Gast
> 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

Mitglied
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!
 
S

SlaterB

Gast
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

Mitglied
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
 
S

SlaterB

Gast
> 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

Mitglied
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
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben