Schön guten Abend,
ich habe Probleme zu verstehen, weshalb mein Programm nicht das tut, was es tun soll. Ich habe verschiedene Klassen (CDTrack, CD, CDTest - siehe unten) und will letztendlich, dass ich bei Ausführung von CDTest.java folgende Infos ausgespuckt bekomme: Titel der CD, Name des Künstlers und nacheinander sämtliche Lieder. Aber der Reihe nach und hier erstmal mein Code:
Kompilieren lässt sich das ganze. Leider verstehe ich zweierlei nicht:
Bei Namen des Kuenstlers erhalte ich auf der Konsole die Ausgabe "null". Hier nehme ich an, dass der Konstruktor "public CD" meine die Anweisung "tracks[0].kuenstler = kuenstler;" nicht richtig versteht (bzw. ich verstehe Java nicht). Ich will erreichen, dass der Künstler des ersten CD-Tracks automatisch der Künstler der gesamten CD ist. Warum kommt hier "null" raus - was mache ich falsch?
Desweiteren funktioniert die Anweisung "System.out.println("Kuenstler, Titel, Laenge der einzelnen Tracks: "+cd.tracks);" gar nicht. Ich will, dass er mir nacheinander die einzelnen Lieder auf der Konsole ausgibt. Auf der Konsole erhalte ich "[LCDTrack;@1d667df0" - damit kann ich leider gar nichts anfangen. Muss ich evtl. eine Schleife (for, while) einführen?
Für Ratschläge und Hinweise wäre ich sehr dankbar.
Gruß
lesni
ich habe Probleme zu verstehen, weshalb mein Programm nicht das tut, was es tun soll. Ich habe verschiedene Klassen (CDTrack, CD, CDTest - siehe unten) und will letztendlich, dass ich bei Ausführung von CDTest.java folgende Infos ausgespuckt bekomme: Titel der CD, Name des Künstlers und nacheinander sämtliche Lieder. Aber der Reihe nach und hier erstmal mein Code:
Java:
class CDTrack{
//Die Attribute der Klasse werden definiert.
int laengeInSekunden;
String kuenstler;
String titel;
//Zwei Konstrukturen stehen zur Initialisierung der Attribute bereit.
public CDTrack (int laengeInSekunden, String titel, String kuenstler){
this.laengeInSekunden = laengeInSekunden;
this.titel = titel;
this.kuenstler = kuenstler;
}
public CDTrack (int laengeInSekunden, String titel){
this.laengeInSekunden = laengeInSekunden;
this.titel = titel;
kuenstler = "Various Artists";
}
}
Java:
class CD{
//Attribute werden definiert.
CDTrack [] tracks;
String titel;
String kuenstler;
//Mithilfe des Konstruktors können die Attribute initialisiert werden.
public CD (CDTrack [] tracks, String titel){
this.tracks = tracks;
this.titel = titel;
tracks[0].kuenstler = kuenstler;
}
//Die Methode "printCD" gibt die CD-Informationen auf der Konsole aus.
public static void printCD (CD cd){
System.out.println();
System.out.println("Albumtitel: "+cd.titel);
System.out.println("Kuenstler der CD: "+cd.kuenstler);
System.out.println("Kuenstler, Titel, Laenge der einzelnen Tracks: "+cd.tracks);
}
}
Java:
class CDTest{
public static void main(String [] args){
//Ein array von 5 Liedern wird erstellt.
CDTrack [] lieder = new CDTrack[5];
//Die einzelnen Lieder werden initialisiert.
lieder [0] = new CDTrack (99,"Lied_1");
lieder [1] = new CDTrack (88,"Lied_2");
lieder [2] = new CDTrack (77,"Lied_3");
lieder [3] = new CDTrack (66,"Lied_4","Kuenstler_1");
lieder [4] = new CDTrack (55,"Lied_5","Kuenstler_2");
//Eine neue CD wird erstellt.
CD Album = new CD(lieder,"Die Klassiker");
//Der Inhalt der CD wird auf der Konsole ausgegeben.
CD.printCD(Album);
}
}
Kompilieren lässt sich das ganze. Leider verstehe ich zweierlei nicht:
Bei Namen des Kuenstlers erhalte ich auf der Konsole die Ausgabe "null". Hier nehme ich an, dass der Konstruktor "public CD" meine die Anweisung "tracks[0].kuenstler = kuenstler;" nicht richtig versteht (bzw. ich verstehe Java nicht). Ich will erreichen, dass der Künstler des ersten CD-Tracks automatisch der Künstler der gesamten CD ist. Warum kommt hier "null" raus - was mache ich falsch?
Desweiteren funktioniert die Anweisung "System.out.println("Kuenstler, Titel, Laenge der einzelnen Tracks: "+cd.tracks);" gar nicht. Ich will, dass er mir nacheinander die einzelnen Lieder auf der Konsole ausgibt. Auf der Konsole erhalte ich "[LCDTrack;@1d667df0" - damit kann ich leider gar nichts anfangen. Muss ich evtl. eine Schleife (for, while) einführen?
Für Ratschläge und Hinweise wäre ich sehr dankbar.
Gruß
lesni