Int / Int = ?

Status
Nicht offen für weitere Antworten.

A3XX

Bekanntes Mitglied
Hi

Ich hab jetzt ne Weile gehabt um in meinem BarChart Programm den Fehler immer genauer einzukreisen. Mittlerweile weiss ich wo der Fehler liegt aber ich weiss nicht wieso.

Also ich möchte zu Werten in einem Array jeweils so ein Bar Chart zeichnen, also so einen Graphen mit so Rechtecken (weiss nicht wie das genau auf deutsch heisst :)

Nun, dann soll es jeweils immer den grössten Wert aus dem Array auslesen (mittels der Methode largestRow) und aus dem den Scale berechnen. Danach soll es alle Werte aus dem Ursprungsarray(data) mit dem Scale multiplizieren und in dem barSource Array speichern.
Das Ursprungsarray ist zweidimensional mit 3 Reihen (rows) und 7 Kolonnen (columns). Und rowIndexBar ist die Reihe zu welcher der BarChart gezeichnet werden soll.

Die barHeight habe ich auf 200 eingestellt, deswegen wird der Graph auch immer korrekt gezeichnet bis ein Wert im Array grösser als 200 ist. Dann ist alles 0. Vermutlich ist der Scale vorher 1.irgendwas und schneidet alles ab dass es immer 1 ist (was auch nicht so gewünscht ist) und sobald der Scale 0.irgendwas ist ist er nur noch 0 und es wird nichts mehr gezeichnet.
Ich verstehe nicht wieso, weil ich ja float als scale genommen habe.
Vielleicht gibt es automatisch Integer wenn man Integer/Integer teilt?!

Mein Code:

Code:
public void scaleValues() {
    largestRow ();
    int largest = largestRow[rowIndexBar];
    float scale = barHeight / largest;

    for(int col = 0; col < data[0].length; col++){
        barSource[col] = (int) (data[rowIndexBar][col] * scale);
    }
}
 
B

bygones

Gast
du hast zwar float als ergebnis genommen, dennoch teilst du zwei ints. wenn der Teiler aber größer ist als der andere dann ist das ergebnis immer 0 !

Code:
double scale = barHeight / (double)largest;
hilft
 

A3XX

Bekanntes Mitglied
Danke es funktioniert :D

Aber nur noch ne Verständnisfrage:

Dann wird das konvertieren eigentlich nach jeder Operation ausgeführt und nicht erst am Schluss beim Gleichheitszeichen? Also deswegen muss mindestens eine Zahl float sein damit es funzt right?
Ich dachte eben solche implizite Castings gingen auch so, wenn man eben den Endtyp float nimmt
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben