我不完全确定标题是否准确,因为我不知道真正的问题。基本上,我正在尝试将燃料元素渲染到我的游戏中,但我希望它适合98像素的容器。我已经完成的工作如下:
float fuelDisplay = fuel / maxFuel;
float fuelDisplayFinal = fuelDisplay*98;
g.setColor(Color.YELLOW);
g.fillRect(15, 81, (int)fuelDisplayFinal, 38);
g.drawImage(Bank.bar, 0, 70, null);
当我开始游戏时,它看起来很好,但是一旦变量'fuel'减少,条形就会完全消失(很可能将其宽度设置为0)。
现在,我假设只要它被转换为整数,它就会简化为零,但我不知道如何解决这个问题。我无法在任何地方找到解决方案,我发现的类似问题已经通过正确完成我所做的事情得到了“解决”。任何和所有的帮助表示赞赏。这可能只是我非常无知的情况,但我希望不是。谢谢大家!
答案 0 :(得分:2)
如果fuel
和maxFuel
都是整数,fuel / maxFuel
的结果将是之前的整数,您尝试将其分配给fuelDisplay
因此,如果fuel == 99
和maxFuel == 100
,整数除法的结果将为零,fuelDisplay
也是如此,尽管它本身就是浮点数。
你可以通过为你的变量使用浮点数或者(可能更好)转换来确保结果是浮点来解决这个问题:
float fuelDisplay = (float) fuel / maxFuel;
或者,您可以通过重新排列公式来完全摆脱浮点数:
int fuelDisplayFinal = fuel * 98 / maxFuel;
g.setColor(Color.YELLOW);
g.fillRect(15, 81, fuelDisplayFinal, 38);
g.drawImage(Bank.bar, 0, 70, null);
假设fuelDisplay
仅在此处本地使用,并且您以后永远不需要以浮点形式使用fuelDisplayFinal
。