WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   IndexOutOfBounds Problem in Java (http://www.wcm.at/forum/showthread.php?t=203509)

coolbininet 13.11.2006 10:43

IndexOutOfBounds Problem in Java
 
Hallo Leute

Habe folgendes Problem mit einer ArrayList . Möchte die ersten drei Einträge mit einer for - Schleife und dem remove Befehl entfernen, bekomme aber die Meldung laut Betreff. Jetzt habe ich diverse Java Dokumentation durchgeschmökert und da steht dann so was wie, irgendwelche Elemente werden dann nach links geschiftet und deren Index um eins reduziert, dürfte etwas mit der internen Behandlung von ArrayList zu tun haben.

Code:

ArrayList <String> personen = new ArrayList <String>();
               
                personen.add ("Max");
                personen.add ("Doris");
                personen.add ("Michael");
                personen.add ("Herbert");
               
               
                for (int i=0; i < 3; i++){
                        personen.remove(i);
                       
                }

Wie kann ich die ersten drei Einträge löschen, aber nur die ersten drei?

Danke für Eure Hilfe!

Grüße Coolbininet

Erechtheus 13.11.2006 16:31

Hi ich glaub ich weiß wo dein Problem ist.

Das Problem ist, dass du mit i über das Array hinauskommst. Also du hast diese vier personen gespeichert.
personen.add ("Max");
personen.add ("Doris");
personen.add ("Michael");
personen.add ("Herbert");

Beim ersten aufuf löschst du die erste Person (Max)--> 3Personen

Beim näcshten Aufruf löschst du Person nummer mit Indexnr:1 (Michael und nicht Doris wie gewüscht), da die ArrayList nur noch 3 Personen beinhaltet.

So gehts z.B

for (int i=0; i < 3; i++){
personen.remove(0);
}

Dann löschst du immernur die vorderste Person

lg

Tarjan 13.11.2006 16:49

Oder Du zählst von 3 zurück, dann löscht Du immer den richtigen Index.

Code:

  for (int i=2; i=>0; i--){
    personen.remove(i);
  }

An sich funktioniert immer den ersten löschen auch, wenn Du allerdings spezifische Daten löschen willst (zB. den 2. und 4.) kommst Du mit dem runterzählen zum Ziel.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag