Array in Klassen

  • Themenstarter Themenstarter GreenThunder
  • Beginndatum Beginndatum
G

GreenThunder

Hallo,

mein heutiges Problem liegt bei der Erzeugung eines Arrays in einer Klasse.
Ich habe die Klasse "Person", in der u.a. die Kinder dieser Person ("Person[] kind;") gespeichert werden sollen.

Mein Problem ist nun, wie ich die Kinder "zuweise".
Ich hatte es mit
PHP:
lilly.kind[] = moni;
versucht, doch da kommt immer die Fehlermeldung:
PHP:
"not a statement lilly.kind[];"
.

Wenn ich dem Array selbst einen Wert zuweise, wie z.B.:
PHP:
lilly.kind[0] = moni;
, dann wird es zwar compiliert, aber beim Ausführen der Ausgabe ("lilly.kind[0]") erscheint die Fehlermeldung:
PHP:
 java.lang.NullPointerException

Was muss ich anders machen?
 
Hallo Björn,

beim zuweisen müssen sie schon den index mit angeben:

lilly.kind[0] = moni;
lilly.kind[1] = lisa;
lilly.kind[2] = peter;

Vg Erdal
 
Hi,

Du solltest das Array initialisieren, d.h.

Code:
lilly.kind = new Person[10]; // Das fehlt, daher auch die NullPointerException (so denke ich)
lilly.kind[0] = moni;

Dies sollte Funktonieren. Allerdings hast Du dann die Einschränkung, dass die Größe des Arrays festgelegt ist. Es gibt Möglichkeiten dieses zu erweitern mittels System.arraycopy(...)

Besser hier wäre eine java.util.List (java.util.ArrayList, etc.) Dann wärst du flexibel mit der Größe.

Gruß

Romsl
 
Romsl hat gesagt.:
Hi,

Du solltest das Array initialisieren, d.h.

Code:
lilly.kind = new Person[10]; // Das fehlt, daher auch die NullPointerException (so denke ich)
lilly.kind[0] = moni;

Dies sollte Funktonieren. Allerdings hast Du dann die Einschränkung, dass die Größe des Arrays festgelegt ist. Es gibt Möglichkeiten dieses zu erweitern mittels System.arraycopy(...)

Besser hier wäre eine java.util.List (java.util.ArrayList, etc.) Dann wärst du flexibel mit der Größe.

Gruß

Romsl


Das Initialisieren des Arrays geschieht in meiner Klasse "Person":
PHP:
Person[] kind;
Dachte ich zumindestens. Mit deiner Variante bekomme ich aber keinen Fehler mehr. :-)
 
GreenThunder hat gesagt.:
Das Initialisieren des Arrays geschieht in meiner Klasse "Person":
PHP:
Person[] kind;
Dachte ich zumindestens. Mit deiner Variante bekomme ich aber keinen Fehler mehr. :-)
Damit deklarierst du es nur, du musst ihm ja auch eine gewisse "größe" zuweisen.
 
NomadSoul hat gesagt.:
Damit deklarierst du es nur, du musst ihm ja auch eine gewisse "größe" zuweisen.

Ok, danke!

Nun hab ich noch das Problem, die Geschwister einer Person auszugeben.
Ich dachte mir, dass man dazu die Kinder der Mutter ausgeben muss, doch das macht noch Probleme:

PHP:
public String geschwister()
  {
  if (mutter == null)
     {
     return "unbekannt";	
     }
     if (this.name == mutter.kind[0].name)
	  {
	  return "keine";	
	  }
	  else
	     {
	      for (int i=0; i<3;i++)        
		    {
		    return mutter.kind[i].name;
	   	    }
		    return "";
             }
    	  }

Ich bekomme immer nur das Kind mit dem Index 0 ausgegeben.
 
Zurück