Java 如何在终端中动态更改号码

Java how to change number dynamically in terminal

最近我在做一个模拟项目。我需要显示家庭温度状态。

    int homeTemp = 20;

    System.out.println(homeTemp + " Degree");

示例输出: 20 度 我想在 运行 代码后在终端中动态实时更新度值。

试图展示这种更现实和模拟的方式,我想动态地更改终端输出,例如(20 度> 每 5-10 秒随机更新值(当前温度 +- 5 度)

是否可以在 Java 中执行此操作?

这比您想象的要复杂得多。 'terminal' 到 java 之类的东西并不存在。有一个字节流流入进程,一个字节流流出。如果你写,例如:

java -jar someapp.jar >somefile.txt

然后它开始有意义 'update a value' 变得不可能(是的,你可以覆盖文件中的字节,但 >somefile.txt 也可以是 >/dev/printer,你可以'不就是让打印机长腿吗,走到刚才抢纸的妹子桌前,把纸吞回去,把之前打印的打印出来。

各种终端有 'rich support' 和某些字节序列,这些字节序列不会打印为字符,但会以其他方式影响它:移动 'cursor',将任何未来文本的背景设为显示为蓝色、清屏等。

这就是这样做的方式:发送这些转义码(打印)。您需要发送的代码,以及确定您要打印的东西是否支持它们,都是 OS 依赖的,并且是否有 lot 选项,因此,java 并没有开箱即用的图书馆试图解决这个问题。

但是,好消息!

它们确实存在! Lanterna 例如。您必须将 jar 添加到您的项目中(或者如果您使用 maven、gradle 或其他为您处理此问题的构建系统,则将 group/artifact/version 添加到您的依赖项列表中)。

或者,不要制作终端应用程序,而是制作一个 swing(桌面、图形用户界面)应用程序,其中更新 JTextField 或其他内容是微不足道的。

Is that possible to that in Java? Thank you

是的。 不客气:)

学习如何使用threadsrunnable接口以及如何在线程中跟踪时间)

一般的互联网(还有这个网站……你真的应该先搜索一下)将拥有你需要的所有信息。