Problem mit For-Schleife

Luk10

Top Contributor
Hallo,

Ich hab leider wieder ein Problem:
Ich habe eine (zwei) For-Schleifen zum belegen von Werten.
Dafür habe ich ein Array (alleFelder) von Feld-Objekten (welche x und y werte speichern) mit 400 Objkten (Je 20 Stk dieselbe x-Koordinate (200x200 Pixel Quarat in welchem 400 Felder sind)) (null-basierend)
Die x-Koordinaten sind belegt und jetzt folgende Schleife zum belegen der y-Koordinaten:

Java:
            //Belegung der y-Werte:
            //Wiederhole in diesem Fall 20 Mal
            for (int i = 0; i < eineReihe*panel.getPixelAbstand(); i = i + panel.getPixelAbstand()) {
                //Gehe jedes Feld der Liste durch und prüfe,
                for (Feld akt : alleFelder) {
                    //auf x == i,
                    //wenn Übereinstimmung: setY(c)
                    //Erhöhe c um 20
                    int c = 0;
                    if (akt.getY() == 0 && akt.getX() == i) {
                        akt.setY(c);
                        System.out.println(akt.getX() + "--" + akt.getY());
                        c = c + panel.getPixelAbstand();
                    }
                }
            }

- getPixelAbstand() liefert einen int zurück welcher die Seitenlänge eines Feldes angibt (Bei einem 400x400 Pixel-Spielfeld -> pixelAbstand = 20 -> 20 Feld-Objekte in einer Reihe)
- eineReihe ist die Variable welche den Wert für die Felder in einer Reihe speichert (20)

Nun das Problem:
Die y-Werte werden nicht belegt!
Bei der System.out.println - Ausgabe erhalte ich nur die x-Werte. y bleibt 0

Was stimmt hier nicht?

Danke, Luk
 
> int c = 0;
[..]
> akt.setY(c);

c ist 0 und du wunderst dich wirklich warum y 0 ist?

danach erhöhst du c, aber das bringt niemanden was, bei jedem nächsten Schleifendurchlauf wird c ja wieder mit 0 deklariert,
so ein Code wird doch nicht nach deinen Wünschen ignoriert,

wahrscheinlich reicht es, die Zeile
int c = 0;
VOR die for-Schleife zu verschieben
(edit: vor die innere oder gar die äußere der beiden for-Schleifen, ausprobieren
oder besser noch genauer drüber nachdenken, was passieren soll)
 
Danke!

Hier die Lösung des Problems:
Ich hatte nicht bedacht das c wieder 0 gesetzt wird sobald ich in die innere Schleife gehe!

Java:
            for (int i = 0; i < eineReihe*panel.getPixelAbstand(); i = i + panel.getPixelAbstand()) {
                //Gehe jedes Feld der Liste durch und prüfe,
                int c = 0;
                for (Feld akt : alleFelder) {
                    //auf x == i,
                    //wenn Übereinstimmung: setY(c)
                    //Erhöhe c um 20
                    if (c > 380) {
                        c = 0;
                    }
                    if (akt.getY() == 0 && akt.getX() == i) {
                        akt.setY(c);
                        System.out.println(akt.getX() + "--" + akt.getY());
                        c = c + panel.getPixelAbstand();
                    }
                }
            }
 

Zurück
Oben