3

我有一个运行在cmd. 我想在运行此过程时显示进度。在这个应用程序中,有 50 个分支正在处理,我想在处理完一个分支后显示2%完成,另一个分支处理完4%,依此类推。问题是当我使用

System.out.print("PROGRESS :" + branch_Vec.get(value).toString()+" : "+ df2.format(((a / total) * 100)) +" % \r");

作为输出,它每次调用时都会换行。

我想在同一行显示进度。例如:

progress : AB : 2%
4

2 回答 2

1

代码System.out.print("\rComplete: "+percentage);应该可以正常工作。

\r是一个回车,将清除当前行。只要您不写换行符\n,您就可以更新文本。

请注意,如果您使用它进行测试,这在 Eclipse 的控制台中不起作用。

于 2013-03-13T11:18:31.263 回答
0

没有办法做到这一点,至少以简单的方式。关键是默认值System.out OutputStream允许您调用print(),它一个接一个地打印字符,或者println(),它与 相同print(),但也在文本末尾添加一个新行。

一种不优雅的解决方案是在更新之间清除屏幕,以使其看起来像是在同一位置打印。例如,如果您使用的是 Windows,这将是:

Runtime.getRuntime().exec("cls");

不幸的是,这一行是系统相关的,因为它调用了cls命令。

于 2013-03-13T10:10:15.560 回答