固定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
相关产品推荐
相关产品推荐

