Exception in thread "main" java.lang.ArithmeticException: / by zero

oppaernst

Mitglied
Hallo zusammen,

wenn ich folgende Berechnung durchführe, erhalte ich den Fehler:

Exception in thread "main" java.lang.ArithmeticException: / by zero

Wie kann das sein?
SORTi[calc][0] = 20
contributors = 6
SORTi[calc][3] = 1

Ich berechne doch nur wins = (20/6) / (1/6) = 20. Das ist mir völlig unverständlich. Grüße

Java:
wins = ((SORTi[calc][0])/contributors)/((SORTi[calc][3])/contributors);
 
Ja, das liegt daran, dass Du die zweite divisionals int Division durchführst und 1 / 6 ist dann 0.

Eine Lösung wäre, dass man die Operation anders Klammert. Je nach Wertebereich kann man erst mit Contributors multiplizieren und dann durch SORTi[calc][3] teilen.

Alternativ kann man einen cast zu double einbauen, damit das Ergebnis ein double ist. Also etwas wie:
((SORTi[calc][0])/contributors)/((SORTi[calc][3])/(double)contributors)

Wenn das Ergebnis aber ein int sein soll, dann würde ich erst multiplizieren und dann dividieren - dann bleibt man bei der Ganzzahl-Arithmetik....
 
Ok, das Problem ist, dass die dann entstehende Double-Zahl wiederum Teil eines Integer-Arrays ist. Das führt dann wieder zu Abstürzen, oder? D.h. ich müsste dann eigentlich von vornherein alles in double machen, oder? Grüße
 
Warum löst du die Rechnung nicht direkt zu was einfacherem auf? Beide Werte erst durch contributors zu teilen ist ja ein überflüssiger Schritt, der nur Ungenauigkeit rein bringt.
 

Neue Themen


Zurück
Oben