Index Out of Bounds bei Vector

hans-sonny

Bekanntes Mitglied
hi leute, ich habe einen Vektor, "speicher plätze"

in diesen Vektor speichere ich Carten ab genau 108 ... das klappt wenn ich mit size aufrufe gibt er mir die anzahl wieder

jetzt möchte ich aus diesem vektor eine karte, die 1. wegnehmen und in einen anderen stapel ablegen


aufruf:
Java:
for (int i = 0; i < 2; i++){
            players.add(new Cards.Deck(Cards.Deck.EMPTY));
            
            for (int j = 0; j < Cards.Deck.DEFAULT ; j++){
                ((Cards.Deck)players.get(i)).insertUnoCard(deck.getCard(0));
            }
            
        }


Vom stapel nehmen:
Java:
        public static Card getCard (int index){
            Card c = (Card)unocards.elementAt(index);
            unocards.remove(index);
            return c;
        }


Cards.Deck.Default = 6

aber wenn ich das aufführe bekomm ich in der zeile:
Card c = (Card)unocards.elementAt(index);

die fehler meldung index out of bounds ...


woran könnte das liegen?
 
Wie genau lautet denn die Fehlerbeldung?
Mach in die Methode noch
Code:
System.out.println(unocards.size())
rein.
 
der Code zeigt es nicht, die Schleifen fragen anscheinend nur 12 Elemente ab,
deinen Angaben zufolge sollten 108 drin sein, das wäre ausreichend,

mehr Code würde die Fehler in dieser Gesamtbeschreibung vielleicht verraten,
selber kannst du auch loggen, zu Beginn von getCard() ein System.out.println
"unocards hat im Moment .. Elemente" mit der size() eingebaut,

schon erhälst du dauern interessante Informationen vom Programm,
etwa ob die Size zu Beginn schon niedrig war/ zwischendurch bedeutend sinkt,
oder ob ganze 108 einzelne getCard()-Aufrufe ausgeführt werden,

je nachdem muss man natürlich weiter viel untersuchen
 
hab bereits eine size ausgabe vor der for schleife ... da wird 108 ausgegeben... und dann beim ersten schleifen durchlauf wirds gleich abgebrochen....


Java:
public static void newGame(){
        //generates Object and Initialize card deck
        deck = new Cards.Deck(Cards.Deck.FULL);
        
        System.out.println(Cards.Deck.getSize());
        
        //init vektor
        players = new Vector(2,0);
        
        System.out.println(Cards.Deck.showCard(0));
        
        //Adds Player decks (two at the moment
        for (int i = 0; i < 2; i++){
            players.add(new Cards.Deck(Cards.Deck.EMPTY));
            

            
            for (int j = 0; j != Cards.Deck.DEFAULT; j++){
                ((Cards.Deck)players.get(i)).insertUnoCard(deck.getCard(1));
            }
            
        }
        
    }


so sieht die methode aus


auf diese weise füge ich karten zum deck hinzu:
Java:
for (int i = 0; i != 4; i++){
                for (int j = 0; j != 10; j++){
                    unocards.add(new Card(i,j));
                }
            }

ist nur ein ausschnitt hab noch diverse andere schleifen dass ich auf 108 komm
 
oO
Java:
deck = new Cards.Deck(Cards.Deck.FULL);
System.out.println(Cards.Deck.getSize());
Öhm. ist getSize eine statische Methode? Und Cards.Deck und deck sind doch völlig verschiedene Sachen.
 

Zurück
Oben