You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用for循环遍历float数组计算总重量的测试失败修复

修复CheckoutMachine的calculateWeight方法逻辑错误

问题根源

你的代码当前只在weight < 20且hasLoyaltyCard为true时,才将折扣后的重量累加到totalWeight,完全忽略了不满足条件的元素,这就是测试用例(比如预期60.0实际得到0.0)失败的核心原因——当所有元素都不满足折扣条件时,totalWeight始终为0。

修复思路

按照需求,需执行以下逻辑:

  1. 遍历整个weights数组的每一个元素
  2. 对每个元素,先判断是否符合折扣条件(weight < 20且hasLoyaltyCard为true),符合则乘以0.95
  3. 无论是否折扣,都要把处理后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:25:31