Java中使用for循环遍历float数组计算总重量的测试失败修复
修复CheckoutMachine的calculateWeight方法逻辑错误
问题根源
你的代码当前只在weight < 20且hasLoyaltyCard为true时,才将折扣后的重量累加到totalWeight,完全忽略了不满足条件的元素,这就是测试用例(比如预期60.0实际得到0.0)失败的核心原因——当所有元素都不满足折扣条件时,totalWeight始终为0。
修复思路
按照需求,需执行以下逻辑:
- 遍历整个
weights数组的每一个元素 - 对每个元素,先判断是否符合折扣条件(
weight < 20且hasLoyaltyCard为true),符合则乘以0.95 - 无论是否折扣,都要把处理后的
weight累加到totalWeight中
修正后的代码示例
public class CheckoutMachine { public float calculateWeight(float[] weights, boolean hasLoyaltyCard) { float totalWeight = 0.0f; for (int i = 0; i < weights.length; i++) { // 创建局部变量存储当前数组元素 float weight = weights[i]; // 符合折扣条件时应用95折 if (weight < 20 && hasLoyaltyCard) { weight *= 0.95; } // 无论是否折扣,都将处理后的重量计入总和 totalWeight += weight; } return totalWeight; } }
关键修正点
- 将累加操作从
if代码块中移出,放到循环的全局逻辑里,确保每个元素都会被计入总重量 - 保留局部变量
weight的赋值和折扣判断逻辑,仅调整了累加操作的执行时机
内容的提问来源于stack exchange,提问作者francois vang
相关产品推荐
相关产品推荐

