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

固定Main函数下实现Java Clock程序持续运行的问题求助

解决方案

在Main函数代码固定的前提下,要实现时钟持续运行,需要修改Clock类的tick()方法,将单次时间递增改为无限循环的持续时间更新,同时添加每秒延迟和控制台输出刷新逻辑。具体修改如下:

修改Clock类的toString()方法

首先去掉字符串末尾的换行符,避免每次输出换行,方便后续覆盖刷新:

public String toString() {
    return String.format(
        "%02d:%02d:%02d", 
        hour.getValue(), 
        minute.getValue(),      
        second.getValue()
    );
}

修改Clock类的tick()方法

将单次执行改为无限循环,每次循环完成时间递增后,等待1秒并刷新控制台输出:

public void tick() {
    while (true) {
        // 原有时间递增逻辑
        second.increase();
        if (second.value == 0) {
            minute.increase();
            if (minute.value == 0) {
                hour.increase();
            }
        }
        // 用\r将光标移至行首,覆盖当前行内容,实现动态时钟效果
        System.out.print("\r" + this);
        // 等待1秒,模拟真实时钟的秒间隔
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

原理说明

  • 利用while(true)无限循环,让tick()方法被调用后持续运行,不再单次执行就结束。
  • Thread.sleep(1000)控制每秒更新一次时间,符合真实时钟的节奏。
  • System.out.print("\r" + this)中的\r是回车符,会将控制台光标移到当前行开头,从而覆盖之前输出的时间,实现动态刷新的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:02:14