System.out.println , System.err.println

  • 本文关键字:System println err out java
  • 更新时间 :
  • 英文 :


我有这个代码:

 System.err.print("number of terms =   ");
 System.out.println(allTerms.size());
 System.err.print("number of documents =   ");
 System.out.print("number of documents =   ");

我认为结果应该是这样的:

number of terms = 10
number of documents =1000

但结果是

10
1000
number of terms =   number of documents =

为什么,以及如何解决它?

流出和错误是独立的。

要获得所需的输出,您必须刷新流或仅使用一个流进行所有输出。

解决它

System.out.print("number of terms = ");
System.out.println(allTerms.size());
System.out.print("number of documents = ");
System.out.print("number of documents = ");

System.out.println -> 将输出发送到标准输出流。一般监控。

System.err.println -> 将输出发送到标准错误流。一般监控。

System.out.print ("He");  
System.out.print ("llo ");  
System.out.println ("World");  

保证打印"你好世界",但是

System.out.print ("He");  
System.err.print ("llo ");  
System.out.println ("World");  

可能会打印"llo He World"或"HeWorld llo"。 它们是 2 个不同的流。

System.err.print()打印到 stderr,这些打印可能不会显示在控制台中。将它们切换到System.out.print()

System.err和System.ou是两个不同的东西。使用System.out,您可以使用system.err写入stdout,您正在写入stderr。

尝试将 System.err 替换为 System.out,您会看到您的问题消失了。

然后你必须替换:

System.err.print("number of terms = ");

System.out.print("number of terms = ");

要更改 println 的颜色,请检查该问题:如何为 System.out.println 输出着色?

在每个 print* 语句之后,使用相应流的 flush 方法。这可能会给你想要的放。

System.err.print("number of terms =   "); System.err.flush();  
System.out.println(allTerms.size()); System.out.flush();  
System.err.print("number of documents =   "); System.err.flush();  
System.out.print( numberOfDocuments ); System.out.flush();  

将导致:

number of terms =   10
number of documents =   1000

希望您正在做一个控制台应用程序,并且正如您所期望的那样err以红色打印。

这可能是原因:errout都有不同的输出流,该流将根据访问控制台的顺序进行打印。

最新更新