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

如何在Clock对象数组中正确递增小时参数?

嘿,这个问题我太懂了!你碰到的报错核心原因很明确:你不能直接给方法的返回值赋值——clocks[i].getHour()是一个返回int类型结果的方法调用,它只是临时返回当前时钟的小时数值,并不是一个能被赋值的变量,所以Java会提示你左侧必须是变量。

正确的实现思路

Java里的对象属性通常遵循封装原则,用getter方法获取属性值,用setter方法修改属性值。所以你需要先拿到当前小时数,加1之后,再通过对应的setter方法把新值设置回Clock对象里。

修正后的代码

完整分步版(可读性更高)

public void daylightSavingsTime(Clock[] clocks) {
    for(int i = 0; i < clocks.length; i++) {
        // 1. 获取当前Clock对象的小时数
        int currentHour = clocks[i].getHour();
        // 2. 给小时数加1
        int newHour = currentHour + 1;
        // 3. 调用setter方法将新小时数设置回去
        clocks[i].setHour(newHour);
    }
}

简化版(一行搞定)

如果觉得分步写太啰嗦,也可以把逻辑合并成一行:

public void daylightSavingsTime(Clock[] clocks) {
    for(int i = 0; i < clocks.length; i++) {
        clocks[i].setHour(clocks[i].getHour() + 1);
    }
}

额外提醒:处理边界情况

如果需要考虑23点加1后变为0点的合理逻辑,可以加上取模运算避免出现24这种无效小时值:

int newHour = (currentHour + 1) % 24;
clocks[i].setHour(newHour);

前置条件

确保你的Clock类已经定义了setHour(int hour)方法——如果没有的话,你需要先给Clock类补充这个setter方法,毕竟要修改对象的私有属性,这是符合封装规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:17