当我编写如下 Java 代码时:
for (int iRun = 0; iRun <nRun; iRun++){
doSomething();
if (100 < nRun && iRun % (nRun / 100) == 0)
System.err.print("\rWorking " + Math.ceil(100.0 * iRun / nRun) + "%");
}
System.err.println("\rWorking " + Math.ceil(100.0 * iRun / nRun) + "%");
System.err.println("fin");
, 它有时会返回
Working 100.0%
fin
,机器人并不总是......它也会打印
Working 100.0%Working 100.0%
fin
.
我认为,在我的代码中,System.err#println
当时没有任何线程调用。
即使我放入Thread.sleep(100);
,它也经常打印Working 100.0%
两次。我没有尝试超过 100 秒。(我不确定它是否真的有效并且更进一步......我尝试的还不错......)
如何确保代码仅以第一种方式打印?如果有一定的答案,它也可以用于System.out::println
吗?