Java printf 不打印

标签 java printing console

我正在尝试用 Java 制作跨平台控制台进度指示器。因此,我使用 System.out.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();
        }
    }
}

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

编辑:我忘了把它添加到问题中。但我已经尝试刷新缓冲区。这没有区别。将 %n 添加到我的 printf 行的末尾有效,但它开始换行,我真的需要它来重用当前行。

所有相反的解决方案都有效。但它们只适用于真正的控制台。不是 netbeans 或 eclipse 控制台。

最佳答案

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

关于Java printf 不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9852705/

相关文章:

c# - 图像打印的宽高比不正确?

javascript - 我可以在 Firebug 中使用 console.log() 查看回调函数的结果吗?

python - Sublime Text 3 Python 交互式控制台?

java - 正则表达式不匹配重复数字

java - 如何禁用URL中的struts jsessionid

java - 使用 Servlet 读取 Jar 内的 list 文件

javascript - 通过 javascript 在 google chrome 和 safari 中打印时出现乱码数据

java - Spring Jackson 数组而不是 List

java - 在 Java 中打印多页 JEditorPane html 内容

command-line - Biztalk 可以运行控制台应用程序吗?