2009-06-05 3 views

Antwort

12

Sie nur den Wert von comix[0] Einstellung, aber Sie holen comix[1] .title und comix[2] .title in der Schleife als auch, wie comix.length ist 3. Der Standardwert für jedes Element in einem Array von Referenztypen ist null. Die Länge ist die Länge des gesamten Arrays, nicht nur die "bevölkerten" Elemente.

Sie können List<T> finden (die am häufigsten verwendete Implementierung ist ArrayList<T>) einfacher mit zu arbeiten.

+0

7 Stimmen in zwei Minuten - nicht schlecht. –

+1

Die einzige Sache, die erklären würde, wie schnell (und gut) Jon ist, Fragen zu beantworten, ist, wenn er eine Menge von alts schafft, um die Fragen in erster Linie zu stellen ...: D –

3

Weil du nur haben definiert, was in comix [0], comix nicht [1] oder comix [2]

2

Sieht aus wie ich ist nur die erste von drei Objekten zuweisen und dann info Anzeige über all drei?

2

Da Ihre For-Schleife 3-mal wiederholt, da die Array-Größe 3 ist. Es spielt keine Rolle, ob das Array mit 3 Elementen gefüllt ist oder nicht, seine Größe ist trotzdem 3.

1

comix [1] .title und comix [2] .title sind null. Sie können nicht in einer Nullzeichenfolge drucken.

2

Nun, Sie haben ein Array für 3 Instanzen von Comic deklariert und Sie haben nur eines. In der zweiten Iteration Ihrer Schleife ist also comix [1] null, so dass comix [1] .title NPE auslöst.

1

Sie haben comix als new Comic[3] definiert, also würde ich erwarten, dass Java die Schleife dreimal durchläuft. In der zweiten Iteration comix[1] gibt es keinen Titel.

+0

tatsächlich gibt es kein Comic ... – Chochos

1

Sie werden nicht einen Fehler, wenn Sie wie folgt vorgehen:

Comic[] comix = new Comic[3];  

for(int i=0; i<comix.length; i++){ 

    comix[i] = new Comic[i]; 

    comix[i] = new Comic("The Amazing Spider-man","A-1","Very Fine",9240.00F); 

    comix[i].setPrice((Float)quality.get(comix[0].condition)); 

    System.out.println("Title: " + comix[i].title); 
}