我正在制作一个java命令行程序。
如何更改已显示的行的内容?
所以,例如我可以显示:
状态:0%
状态:2%
...
状态:50%
除了继续按下每个新行之外,我只是更改现有行的内容,因此完成的%会发生变化。
我之前看到一些控制台程序会这样做,所以我怎么能用java做呢?
答案 0 :(得分:3)
在大多数情况下,您可以输出回车符(\r
)而不是换行符(\n
)。这取决于支持它的终端,大多数都支持它。 \r
将光标移回到行的开头。
编辑:显然,在执行此操作时,请使用System.out.print
而不是System.out.println
(或者通常只使用您正在使用的输出方法的普通形式,而不是ln
形式) - - 由于ln
后缀表示您的文字会自动跟上换行符。
示例:
for (n = 10000; n < 10010; ++n) {
System.out.print(String.valueOf(n) + "\r");
}
System.out.println("Done");
完成此操作后,您可能会在控制台屏幕上显示此内容:
Done0
...因为“完成”比你输出的最长的东西短,所以没有完全覆盖它(因此最后的0,从“10010”遗留下来)。所以课程是:跟踪你写的最长的东西并用空格覆盖它。
答案 1 :(得分:2)
查看 this example 。
工作代码:
public class progress {
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i <= 100; i++) {
Thread.sleep(30);
System.out.print("\rSTATUS: "+i+" % " );
}
}
}
提示:更多Google-java控制台进度条