3

我有这个代码:

 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 =

为什么,以及如何解决?

4

7 回答 7

9

流出和错误是独立的。

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

于 2012-05-07T19:23:01.067 回答
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 -> 将输出发送到标准错误流。一般监控。

于 2012-05-07T19:22:21.323 回答
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”。它们是 2 个不同的流。

于 2012-05-07T19:32:03.120 回答
2

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

于 2012-05-07T19:22:31.353 回答
2

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

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

然后你必须更换:

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

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

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

于 2012-05-07T19:23:47.127 回答
1

在每个 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以红色打印。

于 2012-05-07T19:41:25.667 回答
0

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

于 2012-05-09T04:55:06.080 回答