如何实现返回实际放电量的Java电池放电函数(禁用条件语句)
电池放电函数修正方案
问题核心:当前代码返回的是理论计算的放电量(cameraPowerConsumption * minutes),但实际放电量不能超过剩余电池电量,导致第二次调用时,剩余电量900、理论放电1000的情况下,代码错误返回了1000而非实际可放的900。
修改思路:用Math.min()计算实际可放电量,无需条件语句即可保证放电量不超过剩余电量。
修改后的代码:
public double drain(double minutes) { double theoreticalDrain = cameraPowerConsumption * minutes; double actualDrain = Math.min(theoreticalDrain, batteryCharge); batteryCharge -= actualDrain; totalDrain += actualDrain; return actualDrain; }
逻辑说明:
- 先计算理论放电量
theoreticalDrain - 通过
Math.min()取理论值与当前电池电量的较小值,得到真实可放电量actualDrain - 电池电量减去实际放电量(因
actualDrain不超过当前电量,不会出现负电量) - 总消耗累加实际放电量,最后返回实际放电量
此修改后,第二次调用时剩余电量900、理论放电1000的场景下,实际放电量会取900,返回值符合预期。
内容的提问来源于stack exchange,提问作者tennisplayer97
相关产品推荐
相关产品推荐

