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

从步数数组获取最长达标连续序列的Java代码问题排查

修复最长达标连续步数序列的Java代码错误

原代码核心问题

  1. 完全错误的判断逻辑:原代码用循环索引i和达标步数goalByStepsPerDay比较,根本没访问步数数组days的元素,导致只要循环索引小于等于达标值,就会一直累加计数,最终输出数组长度(即月份天数)。
  2. 计数更新顺序错误:currentSeries++ > finalSeries是先比较再自增,会导致连续天数的计数少算一天,逻辑顺序颠倒。

修正后的代码

方案一:增强for循环(更简洁)

void bestSeries(int goalByStepsPerDay) {
    int currentSeries = 0;
    int finalSeries = 0;
    // 遍历每日步数数组
    for (int dailySteps : days) {
        // 判断当天步数是否超过达标值
        if (dailySteps > goalByStepsPerDay) {
            currentSeries++;
            // 更新最长连续达标天数
            if (currentSeries > finalSeries) {
                finalSeries = currentSeries;
            }
        } else {
            // 未达标,重置当前连续计数
            currentSeries = 0;
        }
    }
    System.out.println("最长达标连续天数:");
    System.out.println(finalSeries);
}

方案二:普通for循环(保留索引访问)

void bestSeries(int goalByStepsPerDay) {
    int currentSeries = 0;
    int finalSeries = 0;
    for (int i = 0; i < days.length; i++) {
        // 取出当前索引对应的每日步数
        int dailySteps = days[i];
        if (dailySteps > goalByStepsPerDay) {
            currentSeries++;
            if (currentSeries > finalSeries) {
                finalSeries = currentSeries;
            }
        } else {
            currentSeries = 0;
        }
    }
    System.out.println("最长达标连续天数:");
    System.out.println(finalSeries);
}

修正说明

  • 直接访问days数组中的每日步数元素,替换原代码中错误的索引判断逻辑;
  • 调整计数顺序:达标时先累加当前连续天数,再更新最长序列记录,避免计数遗漏;
  • 未达标时重置当前连续计数,正确断开连续序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:34