ArrayIndexOutOfBounds

FBIagent

Erfahrenes Mitglied
Moin,

ich habe wie im Betreff schon angegeben ein Problem mit "ArrayIndexOutOfBounds".
Ich bin ratlos wäre nett wenn mir jemand helfen könnte.
Code:
...
private boolean isWall(int a, int b)
 {
  String CharacterPos;
  String OneCharacterPos = "";
  for (int i=this.GeoDataListCount;i>(-1);i--)
  {
   for (int x=a-10;x<a+10;a++)
   {
    for (int y=b-10;y<b+10;i++)
    {
     OneCharacterPos.valueOf(x);
     CharacterPos = OneCharacterPos + " ";
     OneCharacterPos.valueOf(y);
     CharacterPos += OneCharacterPos;
     if (CharacterPos == this.GeoDataList[i]) // Hier tritt der Fehler auf
      return true;
    }
   }
  }
  return false;
 }
...
public boolean load(String GeoDataFile)
 {
  String GeoDataRow = "";
  int Count = 0;
  try
  {
            {
                FileReader GeoDataReader = new FileReader(GeoDataFile);
       BufferedReader GeoDataBuffer = new BufferedReader(GeoDataReader);
       while ((GeoDataRow = GeoDataBuffer.readLine()) != null)
       {
        Count++;
       }
            }
            
            this.GeoDataList = new String[Count];
            Count = 0;
            FileReader GeoDataReader = new FileReader(GeoDataFile);
            BufferedReader GeoDataBuffer = new BufferedReader(GeoDataReader);
            while ((GeoDataRow = GeoDataBuffer.readLine()) != null)
            {
                this.GeoDataList[Count] = GeoDataRow;
                Count++;
            }
   this.GeoDataListCount = (Count-1);
   this.IsGeoDataAvaiable = true;
  }
  catch(Exception e)
  {
   System.out.println("GeoData: " + e.getMessage());
   this.IsGeoDataAvaiable = false;
   return false;
  }
        
  return true;
 }
...

THX im Vorraus
MFG FBIagent
 
Moin,
wenn Du als Index die Arraylänge nimmst, erhältst Du diesen Fehler. Denn Arrays sind 0-basiert. Also ein Array der Länge 10 geht vom Index von 0-9. Also wenn Du rückwärts zählst, starte bei Length-1.
Eine andere Möglichkeit ist, dass die Länge des Arrays gar nicht so groß ist wie die Längenvariable. Dass Du die Länge selbst mitzählst ist übrigens natürlich eine potentielle Fehlerquelle und sollte man möglichst vermeiden.
 
Zuletzt bearbeitet:
Das ein Array mit 0 anfängt ist mir schon klar.
Ich benutze
Code:
for (int i=this.GeoDataList;i>(-1);i--)
da ich mit
Code:
this.GeoDataListCount = (Count-1);
ja schon eine ziffer unter dem gezähltem an GeoDataListCount gebe.

Mit einem Vector habe ich es auch schon versucht
Code:
for (int i=0;i<GeoDataList.size();i++)
und
for (int i=(this.GeoDataList.size()-1);i>(-1);i--)
aber leider kommt immer das gleiche Ergebniss dabei heraus.
Mit Vector habe ich auch nicht GeoDataListCount benutzt.

MFG FBIagent
 
Code:
  for (int i=this.GeoDataListCount;i>(-1);i--)
  {
   for (int x=a-10;x<a+10;a++)
   {
    for (int y=b-10;y<b+10;i++)
    {

In die dritte for-Schleife sollte wohl y++ bzw. b++ statt i++ oder?
 
Zuletzt bearbeitet:
Zurück