• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Exception Handling

theoretisch

Mitglied
Hallöchen,
ich habe mal eine frage über das Exception Handling in Schleifen.
Ich habe ein doppeltes Array durch das ich mittels 2 for-Schleifen durch iteriere um die Werte zu vergleichen.
Nur leider komme ich da hin und wieder mal aus der Arraygröße raus (was leider nicht verhinderbar ist... glaube ich.. und eigentlich auch nicht stört) und mir wird eine ArrayIndexOutOfBoundsException angezeigt.
Da habe ich mir gedacht die könnte ich ja einfach mit try und catch abfangen.... aber wenn ich mich nicht täusche springt er sobald er eine Exception hat aus der Schleife raus... was ich nicht will da er das komplette Array durch testen soll..
Code:
public void testFields(int x, int y) {
        for (int i = 0; i < fields.length; i++) {
            if (fields[x].equals("x")) {
                fieldStatus = "x";
            }
            if (fields[y].equals("x")) {
                fieldStatus = "x";
            }
            try{
                if (fields[y+i][x+i].equals("x")) {
                    fieldStatus = "x";
                }
                if (fields[y-i][x-i].equals("x")) {
                    fieldStatus = "x";
                }
                if (fields[y-i][x+i].equals("x")) {
                    fieldStatus = "x";
                }
                if (fields[y+i][x-i].equals("x")) {
                    fieldStatus = "x";
                }else{
                    fieldStatus = "Q";
                } 
            }catch(ArrayIndexOutOfBoundsException aioobe){
                fieldStatus = "x";
            }
        }
    }

Eine Lösung die mir einfallen würde wäre das ich einfach um jede if Bedingung so einen try/catchblock mache... aber das wäre ziemlich umständlich.
Fällt euch ein einfacherer Weg ein, wie ich das Problem lösen könnte?... ich nehme mal stark an das für so etwas eigentlich nicht try/catch benutzt wird.
Vielen Dank
theoretisch
 
Werbung:
deinen algorithmus nochmals überdenken ist hier der plan.

Zeichne den Ablauf doch mal auf Papier auf. Ziel ist es, dass keine Werte von fields aufgerufen werden, die ungültig sind. Mit fields.length kannst du ja die grösse des Arrays prüfen. Jetzt darfst du einfach auf kein Feld zugreien das > länge -1 ist.
 
jaa das ist schon klar nur ist das glaube ich nicht so einfach möglich... da ich ja alles abdecken will.
also wenn z.b. das mein Array ist, dann muss ich ja, wenn ich alles testen will, auf der einen Seite einmal nur drauf addieren... also in x und y Richtung +1 pro Schleifendurchlauf
x x x x
x x x x
x x x x
x x x x
wenn das x aber genau auf der anderen Seite ist muss ich pro Schleifendurchlauf immer -1 rechnen.
x x x x
x x x x
x x x x
x x x x
also entweder muss ich bei jedem Durchlauf die Position bestimmten und je nachdem eine bestimmte Anzahl addieren oder subtrahieren oder ich muss ihm irgendwie sagen das er alle Werte kleiner 0 oder größer der Länge nicht mehr zählt. Wobei das letztere leichter ist würde ich mal vermuten. Oder?
 
Werbung:
Zurück
Oben