System.out.println,System.err.println

时间:2012-05-07 19:19:59

标签: 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 =

为什么以及如何解决它?

7 个答案:

答案 0 :(得分:9)

流出和错误是独立的。

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

答案 1 :(得分:3)

要解决它

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 - >将输出发送到标准错误流。一般监控。

答案 2 :(得分:3)

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

保证打印“Hello World”,但

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

可能会打印“llo He World”或“HeWorld llo”。它们是两种不同的流。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

System.err和System.ou是两回事。 使用System.out,您将使用system.err将stdout写入stdr。

尝试将System.err替换为System.out,您会发现问题消失了。

然后你必须替换:

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

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

要更改println的颜色,请检查问题:How to color System.out.println output?

答案 5 :(得分:1)

在每个print *语句之后,使用相应的stream的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以红色打印。

答案 6 :(得分:0)

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