首页 > 解决方案 > 按顺序打印所有 System.out.println() 语句

问题描述

我正在尝试使用 System.out.println() 语句在 java 中打印一些语句,但它们没有按顺序打印。

if(us02_birth_b4_marriage())
{
    System.out.println("All user stories passed succesfully");
}
else
{
    System.out.println("There are following errors: ");
    for(String failString: failures)
    {
        System.err.println(failString);
    }
    //System.exit(0);
}

System.out.println("Individual");
System.out.format("%-10s%-20s%-10s%-15s%-10s%-15s%-15s%-20s%-20s\n", "ID", "Name", "Gender", "Birthday", "Age", "Alive", "Death", "Child", "Spouse");

该方法在类的开头定义。这有什么区别吗?请在此处查看输出输出图像

标签: java

解决方案


问题是您正在将一些消息写入System.outSystem.err. 这可能会导致行的顺序出乎意料(取决于您的期望……)。这主要是因为System.out并且System.err是具有不同(Java 端)缓冲特性的不同流。

鉴于您运行应用程序的方式,它们碰巧写到同一个地方;即你的控制台。但即便如此,操作系统也不保证标准输出和标准错误行的交错将完全对应于应用程序编写它们的顺序。

解决方案:如果您想要保证这些行将按照您的代码写入它们的顺序出现在控制台上,您必须将它们写入同一个流。


推荐阅读