当我编写如下的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
?