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

Java计算指定范围内奇数之和代码存在Bug求排查

帮你排查奇数求和代码的Bug

嘿,我瞅了下你的代码,问题其实挺明显的,咱们一步步来拆解:

第一个核心Bug:循环内过早返回结果

你在sumOdd方法的for循环里,找到第一个奇数后就直接return sum了!这会导致程序只累加第一个符合条件的奇数就立刻结束,根本不会继续遍历后续的数字。比如如果start=1、end=5,你的代码只会返回1,而正确结果应该是1+3+5=9。

第二个问题:范围合法性检查位置错误

你把end >= start && start > 0放在了判断奇数的if条件里,这意味着只有当当前数字是奇数时才会验证范围是否合法。虽然极端情况下可能不会出错,但逻辑上很混乱——范围合法性应该在循环开始前就先检查,如果范围本身无效(比如start比end大,或者start是负数),直接返回-1即可,没必要进入循环做无用功。

修正后的代码

public class SumOddRange {
    public static boolean isOdd(int number) {
        // 简化一下判断逻辑,和原来的功能完全一致
        return number > 0 && number % 2 != 0;
    }

    public static int sumOdd(int start, int end) {
        // 先检查范围合法性,无效直接返回-1
        if (start <= 0 || start > end) {
            return -1;
        }

        int sum = 0;
        for (int i = start; i <= end; i++) {
            if (isOdd(i)) {
                sum += i;
            }
        }
        // 循环结束后再返回累加的总和
        return sum;
    }
}

验证一下

比如测试sumOdd(1,5),会累加1、3、5,返回9;测试sumOdd(2,6),累加3、5,返回8;如果传入sumOdd(5,3)或者sumOdd(-1,10),会直接返回-1,完全符合需求。

内容的提问来源于stack exchange,提问作者Verbal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:15