+-

有没有办法在 Java中动态更改输出?例如,如果我有终端窗口:
System.out.print("H")
然后我有:
System.out.print("I")
输出将是:
HI
有没有办法为输出分配位置,允许您动态替换字符?例如(我知道这不会输出我想要的东西,我只是想证明我的想法)这个:
System.out.print("H")
Thread.sleep("1")
System.out.print("I")
它会首先打印出来
H
然后一秒钟后,用一个I替换H?
我确信这听起来很愚蠢,我只对没有GUI动态更改内容感兴趣.有人能指出我这个技术的方向吗?非常感谢你提前.
最佳答案
你可能想看看
System.out.printf
请看这里显示的示例:http://masterex.github.com/archive/2011/10/23/java-cli-progress-bar.html
编辑:
printf显示格式化字符串,这意味着您可以调整该格式并根据需要进行更改.
例如,你可以这样做:
String[] planets = {"Mars", "Earth", "Jupiter"};
String format = "\r%s says Hello";
for(String planet : planets) {
System.out.printf(format, planet);
try {
Thread.sleep(1000);
}catch(Exception e) {
//... oh dear
}
}
使用格式化的字符串语法:http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax
正如评论所说,这个解决方案仅限于一条奇异线,但这取决于您的需求,这可能就足够了.
如果您需要整个屏幕的解决方案,那么可能的解决方案(尽管非常脏)将是使用JNA挂钩操作系统并在控制台窗口上获取句柄,找到它的高度然后将println()循环到“清除” “然后窗口重绘你的输出.
如果您想阅读更多内容,我可以回答更多问题,或者这是一个链接:https://github.com/twall/jna
点击查看更多相关文章
转载注明原文:java – 如何删除打印到控制台/终端的前一个字符? - 乐贴网