# Dynamisches Array



## matzexom (25. Feb 2012)

Hallo liebe Java-Forum.org Mitglieder,

Ich habe eine 
Klasse "Arbeiter" mit den Attributen "Name" und "Gehalt"

und ich soll jetzt eine Klasse "Gehaltsabteilung" erstellen die als privates Attribut ein dynamisches Array "mitarbeiter" enthält, welches Einträge vom Typ "Arbeiter" aufnehmen kann.

Die Klasse "DynArray" ist aus der Vorlesung gegeben:


```
class DynArray {
  private int size;
  private Object[] items;
  
  DynArray() { items = new Object[10]; }	

  public int size() { return size; }
  
  public void ensureCapacity (int capacity) { 
    if (capacity>items.length) {
      Object[] tmpitems = new Object[capacity];
   	  for (int i=0; i<size; i++)  tmpitems[i]=items[i];

   	  items = tmpitems;
    }	
  }
}
```

Und ein Konstruktor Gehaltsabteilung(), der beim Aufruf das DynArray "mitarbeiter"
erzeugen soll.
Macht java das nicht eh automatisch, wenn ich ihm nichts anderes sage?

Das Problem ist ich verstehe die Klasse des DynArray nicht so richtig, wie kann ich jetzt ein item des Typ Arbeiter hinzufügen?

mir ist noch gegeben für die Klasse "DynArray"

```
public void addItem (Object obj) { 
    ensureCapacity(size+1);
    items[size]=obj;
    size++;
  }
```

und wenn ich  
	
	
	
	





```
public void hinzufuegen (Arbeiter arb)
	{
		mitarbeiter.additem(arb);
	}
```
 mache
meckert er rum, aber ich versteh nicht wieso, vielleicht weil die Klassen nicht zueinander passen oder doch der Standard Konstruktor nichts gescheites macht.

Doch so viel Text geworden, sry :X
Vielleicht kann mir einer erklären woran es hapert?

Mit freundlichen Grüßen
Matze


----------



## Antoras (25. Feb 2012)

matzexom hat gesagt.:


> Vielleicht kann mir einer erklären woran es hapert?


Was ist die Fehlermeldung und wie/wo wird die Variable 
	
	
	
	





```
mitarbeiter
```
 initialisiert?


----------



## matzexom (25. Feb 2012)

Ich habe 
	
	
	
	





```
mitarbeiter
```
 so initialisiert


```
public class Gehaltsabteilung {
	private DynArray mitarbeiter;
```

wenn du das meinst.
und bei meiner main Funktion steht das


```
public static void main(String[] args) {
		
		Gehaltsabteilung g = new Gehaltsabteilung();
		Arbeiter Paul = new Arbeiter ("Paul", 100);

		g.hinzufuegen(Paul);
```

 und die Fehlermeldung ist:

Exception in thread "main" java.lang.NullPointerException
	at Gehaltsabteilung.hinzufuegen(Gehaltsabteilung.java:14)
	at TestMain.main(TestMain.java:13)

das sind die Zeilen 

[JAVA=14]mitarbeiter.addItem(arb);[/code]
und
[JAVA=13]g.hinzufuegen(Lutz);[/code]

Die Fehlermeldung sagt ja aus das die Variable null ist, also wird es ein Fehler bei der Initialisierung des Objekts liegen. Aber ich weiß nicht wie ich es richtig initialisieren soll.


----------



## Eldorado (25. Feb 2012)

Wie wäre es mit 

```
mitarbeiter = new DynArray();
```
vorher?


----------



## matzexom (25. Feb 2012)

ok jetzt gehts hab im Konstruktor ,wie du meinstest, noch


```
public Gehaltsabteilung ()
	{
		mitarbeiter = new DynArray();
	}
```
eingefügt

vielen dank für eure schellen Antworten


----------

