Java printf不打印

Daa*_*ape 5 java printing console

我正在尝试用Java制作跨平台控制台进度指示器.因此,我使用System.out.printf方法打印出一个百分比:

System.out.printf("\t%2.2f%%\b\b\b\b\b\b", percentage);
Run Code Online (Sandbox Code Playgroud)

我把它放在一个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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为问题与编译器优化有关,但我并不害羞.奇怪的是,System.out.println当for循环运行时会打印.

编辑:我忘了将其添加到问题中.但我已经尝试冲洗缓冲区了.这没什么区别.添加%n到我的printf行的末尾但是它启动了换行符,我真的需要它来重用当前行.

所有对立的解决方 但它们只适用于真正的游戏机.不是netbeans或eclipse控制台.

use*_*396 6

那是因为输出流是行缓冲的.如果在格式字符串的末尾添加"%n",则还会生成换行符,并且该行将被刷新(即打印).或者,调用System.out.flush()手动刷新输出流并强制打印缓冲的内容.