For/Array Error: IndexOutOfBounds

Xge

Mitglied
Hallo,

ich habe bereits in anderen Foren diese Frage gestellt und auch Google hat mir nicht weitergeholfen. Klar findet man zu diesem Error viele Beispiele, aber ich kann bei meinem Code nirgends feststellen, wieso ich hier ein Error bekomme.

Deshalb würde ich gerne die richtige Version meines Codes bekommen 🙂

Java:
public static void addPlayertoTeam(Player p, int teamnumber) {
        
          if (Check.getTeamMembers(teamnumber).size() != Check.getSproTeam()) {

           for(int i=0; i < Check.getTeamAnzahl(); i++) {
            if (Check.getTeamMembers(i+1).size() != 0) {
              
             for (int j=0; j < Check.getTeamMembers(i+1).size(); j++) {
              if (Check.getTeamMembers(i+1).get(j+1) == p.getName()) { // <- Wenn dieses if nicht existiert, dann kommt der Error nicht.
              }
             }
            }
           }
 
Ich geh mal davon aus, dass Check.getTeamMembers(int) eine Collection zurückgibt? Wenn das stimmt dann ist der Fehler wie folgt zu erklären:
Du bekommst eine Collection der Länge (zB) 10 zurück. Damit hast du Indizes von 0...9.
Deine innere for-Schleife geht von 0 ... 9, greift aber immer auf j+1 zu. D.h. dein größter Indizes auf den du zugreifen willst ist 10.
 
Und weil ich es gerade sehe (ich gehe mal davon aus, dass getName() einen Strnig liefert): man vergleicht Strings in Java nicht mit "==" sondern per equals()
 
Vielen Dank für die (nützlichen) Antworten.
Habe den Fehler behoben. Es war .get(j+1), habe irgendwie gedacht, 1 ist der erste Eintrag und nicht 0.
@mihe7 Ja, werden das mit equals gleich machen.

Danke!
 

Zurück
Oben