Falsches Ergebnis mit "/" Operator

yachty66

Mitglied
Ich bin super verwirrt, da ich bei dem "int end = zaehlerSum/zaehler;" Printbefehl auf ein falsches Ergebnis stoße. Es steht dort "45176/250", was eigentlich rund "180" als Ergebnis sein müsste, allerdings wird mir "250" als Ergebnis ausgegeben. Wie kann das sein?

Java:
public double getAverageIntensity(int[] coords) {
        int zaehlerSum = 0;
        int zaehler = 0;
        int startY = coords[1];
        int endY = coords[3];
        int startX = coords[0];
        int endX = coords[2];
        //int height = img.getHeight(), width = img.getWidth();
        for (int y = startY; y < endY+1; y++) {
            for (int x = startX; x < endX+1; x++) {
                int RGBA = img.getRGB(x, y);
                //System.out.println(x+"+"+y);
                Color c = new Color(RGBA);
                int red = c.getRed();
                int green = c.getGreen();
                int blue = c.getBlue();
                int sum = red+green+blue;
                zaehler = zaehler + 1;
                zaehlerSum = zaehlerSum +sum;
                //System.out.println(zaehler);
            }
        }
        System.out.println(zaehlerSum);
        System.out.println(zaehler);
        //int zaehlerIn = 0;
        //int etf = zaehler + zaehlerIn;
        int end = zaehlerSum/zaehler;
        System.out.println(end);
        System.out.println(zaehlerSum +"/"+end);
 
Du gibst bei der letzten Ausgabe ja auch end aus und nicht zaehler. Die Zeile soll wohl sein:
System.out.println(zaehlerSum +"/"+zaehler);

Edit: zaehler wird ja oberhalb auch einmal ausgegeben. Da dürftest Du also auch die 180 zu sehen sein. Also etwas wie
45176
180
250
45176/250
dürfte derzeit die Ausgabe sein bei Dir.
 
Längerfristig dürfte auch (z.B.) "double" statt "int" ein passender(er) Datentyp für die Ergebnisse der Divisionsoperation sein.
 

Zurück
Oben