我想在Java中製作跨平臺控制檯進度指示器。因此我使用System.out.printf方法打印出一個百分比:Java printf不打印
System.out.printf("\t%2.2f%%\b\b\b\b\b\b", percentage);
我把它放在for循環中。我遇到的問題是,在整個for循環完成之前它不會打印任何內容。這是一個程序示例來顯示問題:
public class Test {
public static void main(String[] args) {
for(int i =0; i<5000; i++){
System.out.printf("\b\b\b\b\b\b%2.2f%%", ((float) i/5000f)*100f);
System.out.flush();
}
}
}
我認爲這個問題與編譯器優化有關,但我不舒服。奇怪的是,當for循環運行時,System.out.println
會打印出來。
編輯:我忘了把它添加到問題。但我已經嘗試沖洗緩衝區。這沒有什麼區別。將%n
添加到我的printf行的結尾,但它啓動了一個換行符,我真的需要它重新使用當前行。
所有反對的解決方案的工作。但他們只能在真正的遊戲機上工作。不是netbeans或eclipse控制檯。
你的代碼的工作,對我來說是有點快,所以我包括一個'嘗試{ \t了Thread.sleep(10); } catch(InterruptedException ignored){}'。 – 2012-03-24 16:52:14