# Array erweitern



## Nanobox (15. Nov 2008)

Erstmal Hallo,

Ich bin gerade dabei ein Verleihsystem für eine Fiktive Videothek zu schreiben. Das Menü funktionert schon, jedoch kann ich keinen neuen "Kunden" anlegen, da ich das Array nicht erweitern kann. Vorgabe war es, das Array in ein Temporäres zu kopieren, es neu anlegen + 1 Feld und den Rest zurück kopieren.


```
public void kundeneu()
     {
         Kunde[] temp;
         temp = new Kunde[Kunden.length];
         
         for(int i = 0; i <= Kunden.length; i++)
         {
             temp[i] = Kunden[i];
         
         }
                Kunden = new Kunde[temp.length +1];
                
         
         
        for(int d = 0; d <= temp.length; d++)
        {
             Kunden[d] = temp[d];
        }
         
         int PLZ;
         int Kundennummer;
         String Ort;
         String Name;
         String Strasse;
         
         System.out.println("Bitte geben Sie den Namen ein");
         Name = Tastatur.leseText();
         
         System.out.println("Bitte geben Sie die Strasse ein");
         Strasse = Tastatur.leseText();
         
         System.out.println("Bitte geben Sie den Ort ein");
         Ort = Tastatur.leseText();
         
         System.out.println("Bitte geben Sie die PLZ ein");
         PLZ = Tastatur.leseZahl();
         
         System.out.println("Bitte geben Sie die Kundennummer ein");
         Kundennummer = Tastatur.leseZahl();
         
         Kunden[Kunden.length] = new Kunde(Kundennummer, "Name", "Strasse", PLZ, "Ort");
         
     }
```

bei der Ausgabe bekomme immer als Ausgabe folgendes

```
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at videothek.Verleihsystem.kundeneu(Verleihsystem.java:700)
        at videothek.Verleihsystem.Kundenverwaltung(Verleihsystem.java:124)
        at videothek.Verleihsystem.Hauptmenue(Verleihsystem.java:64)
        at videothek.Verleihsystem.main(Verleihsystem.java:94)
```

Über eine Tipp wäre ich dankbar.


----------



## SlaterB (15. Nov 2008)

nicht nur dicke Schleifen bauen sondern auch mal den Kopf zwischendurch einschalten

mal angenommen, Kunden ist ein Array der Länge 3 (Variablen klein schreiben!)

dann gibt es drei Indexe: 0, 1 und 2

und was macht eine Schleife
> for(int i = 0; i <= Kunden.length; i++) 
?

sie benutzt die Indexe 0, 1, 2 und 3, das passt nicht zusammen


----------



## Povlsen84 (15. Nov 2008)

Warum benutzt du keinen Vector? Der ist afaik intern genau so angelegt.


----------



## Nanobox (15. Nov 2008)

Povlsen84 hat gesagt.:
			
		

> Warum benutzt du keinen Vector? Der ist afaik intern genau so angelegt.



Weil das Programm jeder in meiner Klasse verstehen soll. Und da einige so weit sind, wurde unsere Klasse geteilt in 2 Gruppen. Gruppe 1 baut am Videothekprogramm weiter (5 Leute) der Rest macht was anderes (ich glaub ne abgespeckte version mit viel weniger code)

Wenn du ein gutes Tutorial hast, wie man mit Vectoren arbeitet versuch ich mich mal dran


----------



## Bernd40 (15. Nov 2008)

Was spricht gegen eine ArrayList?  ???:L 

ansonsten kannst du dein Array durch eine Methode erweitern:



```
public void erweitereArray() {
Kunde[] altesArray = this.temp;

this.temp = new Kunde[altesArray.length + 1];

int i = 0;
while (i < this.temp.length) {

this.temp[i] = altesArray[i];
i++;
}
}
```


----------



## Bernd40 (15. Nov 2008)

in Zeile 8 muss natürlich 
i < altesArray.length
 stehen ...und habe mich auch bei deinem Code verguckt,dachte temp wäre eine Instanzvariable.
Ist halt auch schon spät


----------

