ArrayIndexOutofBoundsException: 10

Ritcha

Mitglied
Kann mir bitte jemand sagen was daran falsch ist. Der Code funktioniert aber bekomme trotzdem diese Meldung. Ich weiß auch was die Meldung bedeutet, aber finde den Fehler immernoch nicht. Danke schonmal im Vorraus.
Java:
public void wunschLöschen(int position){
        if(anzahlDVD == 0){
            System.out.println("FEHLER: Wunschzettel leer!");
        }
        else {
            wunschzettel[position - 1] = null;
            for(int i = position; position < anzahlDVD; i++){
                wunschzettel[i - 1] = wunschzettel[i];
            }
            wunschzettel[anzahlDVD - 1] = null;
            anzahlDVD = anzahlDVD - 1;
        }
    }
 
Zuletzt bearbeitet:
Du rufst irgentwo wunschzettel[10] auf, und der Zettel hat nur 0...9

anzahlDVD wird wohl asyncron zu sein wunzettel.length, sonst hättest die probleme nicht.

Gruß,

JM
 
Also das ist mir bewusst, nur weiß ich beim besten Willen nicht wo. Ich poste mal den ganzen Code rein:

[Java]
class Kunde {
String name;
int kundennummer;
String adresse;
DVD[] wunschzettel;
int anzahlDVD;

public Kunde(String n, String ad) {
name = n;
adresse = ad;
anzahlDVD = 0;
kundennummer = (int) Math.random()*99999 + 10000;
wunschzettel = new DVD[10];
}

public void wunschHinzufügen(DVD d) {
if(anzahlDVD == 10){
System.out.println("FEHLER: Wunschzettel voll");
}
else {
wunschzettel[anzahlDVD] = d;
anzahlDVD = anzahlDVD + 1;
}
}

public int rückgabeVerbuchen() {
return 0;
}

public void wunschLöschen(int position){
if(anzahlDVD == 0){
System.out.println("FEHLER: Wunschzettel leer!");
}
else {
wunschzettel[position - 1] = null;
for(int i = position; position < anzahlDVD; i++){
wunschzettel[i - 1] = wunschzettel
}
wunschzettel[anzahlDVD - 1] = null;
anzahlDVD = anzahlDVD - 1;
}
}
}
[/Java]

PS: Der Fehler soll in der for-Schleife liegen. Danke schonmal im Vorraus.
 
Zuletzt bearbeitet:
Also du musst du das debuggen oder entsprechende sysouts einfügen.

Beim drüber gucken, ist die for-schleife endlos, weil position sich niemals ändert, aber teil der Abbruchbedingung ist..
 
Du hast:

Java:
for(int i = position; position < anzahlDVD; i++){
wunschzettel[i - 1] = wunschzettel}}

Evtl. wolltest du:

Java:
for(int i = position; i < anzahlDVD; i++){
wunschzettel[i - 1] = wunschzettel;}}

???

JavaMeister hat es schon genannt wo dass Problem liegt.
 

Zurück
Oben