如何在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
相关产品推荐
相关产品推荐

