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