Wie kann ich mir eine Array-Liste ausgeben lassen?


04.05.2020, 17:42

Ich bekomme jetzt den Inhalt der Liste ausgegeben, allerdings auch eine Fehlermeldung:

java.lang.NullPointException

at CD_Regal.gibListe(CD_Regal.java:48)

Wisst Ihr, was das bedeutet.

Vielen Dank nochmal

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
System.out.println(cDSammlung.length);

Gibt dir ja nur die Länge der Liste aus.

Um an die tatsächlichen Inhalte deiner Liste zu kommen, könntest / solltest du eine for-schleife verwenden:

for(CD c : cDSammlung){
  System.out.println(c.name);
}

c.name muss dann natürlich irgendein Attribut sein, das die Klasse CD hat und worauf auch zugegriffen werden kann.

Woher ich das weiß:eigene Erfahrung
INeedHelp275 
Fragesteller
 30.04.2020, 09:59

Vielen Dank, ich probiere es gleich mal aus

0
INeedHelp275 
Fragesteller
 30.04.2020, 12:11

Ok hab das gerade rein geschrieben. Ich bekomme jetzt den Inhalt der Liste ausgegeben, allerdings auch eine Fehlermeldung:

java.lang.NullPointException

at CD_Regal.gibListe(CD_Regal.java:48)

Aber wenigstens kann ich jetzt sehen, was in der Liste steht xD

0

Abgesehen von dem Fehler, den dir xLucarix bereits benannt hat, kann dein Code da oben nicht funktionieren. Es sind verschiedene Syntaxfehler vorhanden.

1) Hier:

public void cdEintragen(String pTitel; String pInterpret; int Erscheinungsjahr)

trennst du die Parameter jeweils mit Semikolons, statt Kommazeichen.

2) Die Variable pErscheinungsjahr wird nirgendwo deklariert. Du hast wohl das p im Methodenkopf vergessen.

3) Da Java case-sensitive agiert, müssen if und else komplett mit Kleinbuchstaben geschrieben werden.

4) Bei deinem letzten println-Aufruf fehlt am Ende der Zeile das abschließende Semikola.

Im Übrigen wären noch folgende Veränderungen gut:

  • Vergleiche nicht mit 50, sondern mit der Länge des Arrays (cDSammlung.length). Das macht dein Programm flexibler, denn nun braucht bei einer Längenänderung nur die Größe des Arrays angefasst werden. Nicht aber das if-Konstrukt.
  • Wenn du einen einheitlichen Stil wahren würdest. Nutze auch für Klassennamen die kamelHoeckerSchreibweise (CdRegal). Die Variable cdanzahl müsste cdAnzahl heißen.
  • Vermeide es, doppelte Bezeichner zu verwenden. Du hast bei dir eine Variable cdEintragen, die den selben Namen wie eine Methode hat. Das kann schnell verwirren.
  • Deine Methode gibListe gibt nichts an den Aufrufer zurück, sondern führt etwas auf der Konsole aus. Daher wäre ein Name wie: gibListeAus o.ä. passender.
  • Auf diese Typcodierung mit dem p für Parameter würde ich vollends verzichten. Denn wo liegt der relevante Unterschied, ob es sich gerade um einen Parameter handelt oder eine Variable, die später in der Methode deklariert wurde? Klassen- und instanzbezogene Variablen kannst du bei Bedarf über den Klassennamen / this ansprechen.
INeedHelp275 
Fragesteller
 30.04.2020, 10:10

Viele Dank für die Antwort. Bei 1, 3 und 4 war das hier meine eigene Dummheit bzw. die Autokorrektur, steht aber richtig im Programm ;)

2 habe ich woanders deklariert, allerdings hat das nicht mehr richtig in die Frage gepasst, deshalb hab ich das hier weggelassen xD

Deine Sonstigen Anmerkungen werde ich mir zu Herzen nehmen und in die Programmierung mit aufnehmen :D

0