Array erweitern

Status
Nicht offen für weitere Antworten.

Nanobox

Neues Mitglied
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.

Code:
    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
Code:
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.
 
S

SlaterB

Gast
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
 

Nanobox

Neues Mitglied
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 :)
 
B

Bernd40

Gast
Was spricht gegen eine ArrayList? ???:L

ansonsten kannst du dein Array durch eine Methode erweitern:


Code:
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++;
}
}
 
B

Bernd40

Gast
in Zeile 8 muss natürlich
i < altesArray.length
stehen :p...und habe mich auch bei deinem Code verguckt,dachte temp wäre eine Instanzvariable.
Ist halt auch schon spät
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben