我有这个代码:
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
以红色打印。
这可能是原因:err
和out
都有不同的输出流,该流将根据访问控制台的顺序进行打印。