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

数字时钟incrementMinutesBy方法开发问题求助

修复数字时钟的incrementMinutesBy方法

需求说明

需要实现分钟数累加逻辑,满足:

  • 最终currentMinutes的值为原有分钟数与传入参数之和对60取模的结果
  • currentHour需累加原有分钟数与传入参数之和除以60的商,同时保持24小时制循环(超过23则回滚到0)

原方法存在的问题

当前的incrementMinutesBy方法有以下错误:

  • 多余的m++语句,导致分钟数被额外加1,不符合累加需求
  • 未实现分钟进位到小时的逻辑
  • 仅当分钟数超过59时才设置新分钟值,否则不会更新currentMinutes
  • 异常检查逻辑不严谨,未正确拦截负数输入

修复后的代码

替换原有的incrementMinutesBy方法为以下实现:

public void incrementMinutesBy(int minutes) {
    // 检查输入合法性:不允许负数分钟
    if (minutes < MINUTES_MIN) {
        throw new IllegalArgumentException("Invalid input. No negative minutes");
    }
    
    int totalMinutes = getMinutes() + minutes;
    int hoursToAdd = totalMinutes / TOTAL_NUMBERS_MINUTES;
    int newMinutes = totalMinutes % TOTAL_NUMBERS_MINUTES;
    
    // 更新分钟数
    setMinutes(newMinutes);
    // 调用已有的小时累加方法处理进位,自动处理24小时循环
    incrementHoursBy(hoursToAdd);
}

修复要点说明

  1. 输入合法性检查:提前判断传入的minutes是否为负数,直接抛出异常,符合方法的前置条件
  2. 总分钟计算:计算原有分钟与传入分钟的总和,用于后续拆分分钟和进位小时
  3. 拆分分钟与小时:通过整除60得到需要进位的小时数,取模60得到最终的分钟数
  4. 复用现有逻辑:调用已实现的incrementHoursBy方法处理小时进位,利用其已有的24小时循环逻辑,避免重复代码
  5. 完整更新状态:无论分钟是否进位,都会调用setMinutes更新分钟值,确保状态正确

测试示例

比如初始化时钟为12:15:

  • 调用incrementMinutesBy(59),最终时间应为13:14(15+59=74,74/60=1小时进位,74%60=14分钟)
  • 调用incrementMinutesBy(60),最终时间应为13:15(15+60=75,75/60=1小时进位,75%60=15分钟)
  • 调用incrementMinutesBy(125),最终时间应为14:20(15+125=140,140/60=2小时进位,140%60=20分钟)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:33