+-
java – 如何删除打印到控制台/终端的前一个字符?
有没有办法在 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 – 如何删除打印到控制台/终端的前一个字符? - 乐贴网