2016-06-02 14 views
0

Ich habe einen seltsamen Logikfehler in meinem Code, der mir nicht erlaubt, meine Variablen zu teilen.Division von Zufallsvariablen Java

Hier versuche ich, den verursachten Schaden zu teilen und es meiner Gesundheit hinzuzufügen. Ich ändere meine int zu float auf lifeTake damageDealt und health, weil ich wusste, dass ich einige Dezimalzahlen bekommen konnte.

Wenn ich das tue passiert nichts und ich kann nicht die Antwort finden, so entschied ich mich, es selbst zu fragen. Vielen Dank im fortgeschrittenen, Wird

+2

Wenn damageDealt ein int <10 ist, erhalten Sie null zurück. Es ist wichtig zu verstehen, wie die Integer-Division funktioniert. Wirf es in einen Float/Double und du wirst es besser machen. – duffymo

+0

Wenn du deine Gesundheit aktualisierst, sollte es wahrscheinlich "Gesundheit + = Leben" sein. – Grayson

Antwort

0

es so versuchen:

// I assume these are not Strings. If they are, compare using equals 
if (cWeapon == soulSteeler) { 
    lifeTake = damageDealt/10.0; 
    lifeTake += health; 
} 
+2

Warum nicht einfach 'lifeTake = (damageDealt/10.0) + health;'? – FredK

0

Wie Duffymo sagte: Es ist wahrscheinlich, dass damageDealt eine ganze Zahl als 10 weniger ist die damageDealt/10 immer 0. würde dies zu beheben , ändern Sie 10 zu 10.0 oder werfen Sie es als Float oder Double. Wirf auch damageDealt als Double oder Float, um dir das richtige Ergebnis zu geben. Stellen Sie außerdem sicher, dass es sich bei lifeTake um einen Float/Double-Wert handelt, da Sie sonst unter denselben Dateneinschränkungen leiden.

+0

Ich erinnere mich nicht, brauchte eine Sekunde. Es scheint nicht hilfreich oder notwendig zu sein, das zu wiederholen, was ich gesagt habe. – duffymo