for-Schleife gibt zweidimensionales Array falsch aus

wantri

Mitglied
Hallo,

ich habe eine Klasse PPM, in der die Daten eines PPM-Bildes in den Membervariablen gespeichert werden.
In einer anderen Klasse habe ich nun die Methode edgeDetection(PPM datei), die auf die übergebene Datei einen Laplace-Filter anwenden soll.

Hier möchte ich das Array, welches die Pixel des PPM-Objekts beinhaltet, zunächst in ein zweidimensionales Array umwandeln.
Auf die Werte in diesem Array soll über array[datei.bildhoehe][datei.bildbreite] zugegriffen werden können.
Die beiden Variablen haben die Werte datei.bildhoehe=500 und datei.bildbreite=539.
D.h., wenn ich das Array über printf("pixelZweidimensional[%d][%d]: %d\n",j,k,pixelZweidimensional[j][k]); ausgebe, sollte der größte Wert in der zweiten Indexklammer 538 betragen. Gebe ich es jedoch aus, geht es in der zweiten Klammer jeweils maximal mit 499.

Ich habe natürlich geschaut, ob ich die beiden Variablen irgendwo vertauscht habe, konnte aber solch einen Fehler nicht finden.

C++:
int** pixelZweidimensional=new int*[datei.bildhoehe];

        int i;
        for(i = 0; i < datei.bildhoehe; i++) {
            pixelZweidimensional[i] = new int[datei.bildbreite];
        }
        int indexPixelArray=0;
        while(indexPixelArray<(datei.bildbreite*datei.bildhoehe)) {
                int j;
            for(j = 0; j < datei.bildhoehe; j++) {
                printf("j: %d\n", j);
                int k;
                for(k = 0; k < datei.bildbreite; k++) {
                printf("k: %d\n",k);
                    pixelZweidimensional[j][k] = datei.pixelArray[indexPixelArrayP3];
                    printf("pixelZweidimensional[%d][%d]: %d\n",j,k,pixelZweidimensional[j][k]);
                    indexPixelArray++;
                }
            }
        }

arrayausgabe.PNG

Bitte um Hilfe.

Vielen Dank im Voraus!
 
K

kneitzel

Gast
Hast Du Dich etwas mehr mit dem Thema Debugger beschäftigt? Der Tipp ist immer noch gültig bei solchen Problemen.

Hast du mal Datei.bildbreite kontrolliert? Vermutlich ist da die 500 gelandet von der Höhe ...

Und wozu die äussere while Schleife? Die verschachtelten for Schleifen leuchten ein, aber die while Schleife? Was willst du da genau machen / erreichen?
 

Ähnliche Java Themen

Neue Themen


Oben