如何在命令行java程序中显示一行而不显示新行?

时间:2009-08-24 14:28:22

标签: java command-line

我正在制作一个java命令行程序。

如何更改已显示的行的内容?

所以,例如我可以显示:

状态:0%
状态:2%
...
状态:50%

除了继续按下每个新行之外,我只是更改现有行的内容,因此完成的%会发生变化。

我之前看到一些控制台程序会这样做,所以我怎么能用java做呢?

2 个答案:

答案 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控制台进度条