基于java的动态时间显示

l7wslrjt  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(301)

我正在尝试制作一个java应用程序来显示不同城市的实时信息。但我需要把它显示在控制台上。我的问题是,我可以使用循环,但它打印换行时,时间在变化。我想知道是否有一种方法,使显示实时无需打印到newline一次又一次。谢谢你的帮助。

7ivaypg9

7ivaypg91#

问:我想知道是否有一种方式来展示。。。没有新线。
a:是的。
问题是您似乎有一个控制台模式的应用程序,它使用system.out.println()(或等效的)。解决办法是使用“其他东西”。
理想情况下,您可以使用gui,比如javaswing
或者,如果您仍然想要一个控制台模式的应用程序,您可以使用java的“curses”类型库。例如:终端和ncurses java库

smdnsysy

smdnsysy2#

使其显示在控制台上
对于窗口命令提示符,我知道 \r 在一行的末尾,而不是 \n 或者 \r\n ,将光标返回到当前行的开头,因此下一个打印文本将打印在上一个文本上。
我不知道这在linux上是否有效。
我知道它在某些ide的控制台输出窗格中不起作用。 \r 表现得像 \n 在日 eclipse 中。
请注意,在windows命令提示符中,以下命令将在单行上显示正在运行的时钟:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
for (;;) { // loop forever
    LocalTime time = LocalTime.now();
    System.out.print(time.format(formatter) + "\r");
    TimeUnit.NANOSECONDS.sleep(1_000_000_000 - time.getNano());
}

注1:代码使用 print() ,不是 println() ,自从 ln 将打印 \r\n 我们不想要。
注2:它在现有文本上打印,它不会清除行,因此如果一行打印 Hello World\r 那么 Goodbye\r ,结果是文本 Goodbyeorld . 您需要用空格填充以清除任何现有文本。这当然不是像这样的固定宽度输出的问题 HH:mm:ss .

相关问题