Wieso komme ich nicht zum letzten Pixel

HarryHut

Mitglied
Hallo,

folgender Code

Code:
int width = image.getWidth();
int height = image.getHeight();

                   for (int x = 0; x <= width; x++) {
                        for (int y = 0; y <= height; y++) {

                            int rgb = image.getRGB(x, y);

                            Color color = new Color(rgb);

                            if (color.getRed() > 0 && color.getRed() > color.getGreen()) {
                                redCnt++;
                            }

                            if (color.getGreen() > 0 && color.getGreen() > color.getRed()) {
                                greenCnt++;
                            }

Hier bekomme ich immer die Fehlermeldung java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
Wenn ich aber die <= durch < ersetzte funktioniert es zwar ich erhalte aber das letzte Pixel nicht d.h. wenn das Bild 800x800 ist läuft es nur bis 799,799!

Danke!
 
Hallo Harry,

das hat so seine Richtigkeit, denn

0,1,2,...,799 -> macht 800 Pixel

1,2,3,...,800 -> sind auch 800 Pixel

. Also eine Frage, wo man anfängt zu Zählen.

Vg Erdal
 
Aber wenn ich bei 1 anfange mit <= bekomme ich auch diesen Fehler und mit < komme ich nur bis 799!

Hat sich erledigt ein Bild mit 800x800 geht von Pixel 0,0 bis 799,799!
 
Zuletzt bearbeitet:
Ja. Das intern so geregelt (Hier eben in dem Bild).
Wir fangen bei 1 an zu zahlen. Eine Masche bei 0.
Und das nehmen sich die meisten die Klassen schreiben
als Vorbild und adressieden auch ab 0 bis (in diesem Fall) 799.

Es reicht also nicht wenn du einfach bei 1 anfängst zu zählen, es
muss auch intern so geregelt sein.
 
Zurück