我有这段代码:
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 =
为什么以及如何解决它?
答案 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)
这可能是原因:err
和out
都有不同的输出流,它们将根据访问控制台的顺序进行打印。