2012-05-07 30 views
3

我有这样的代码:的System.out.println,通信System.err.println

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

您是否尝试过使用相同的输出流来处理它们? System.out或System.err。 – user845279

+0

是的,但我需要使一些话红色,所以我用system.err –

回答

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

+0

我需要使用system.err cos它给了我一个红色 –

+0

@WilliamKinaan,然后使用System.err,但所有 – Habib

+0

@WilliamKinaan,或尝试System.out.println(“\ u001B31; 1mhello world!”);以红色打印,未通过测试 – Habib

2

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

9

流出和err是独立的。

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

+0

我需要输出为红色,所以我使用system.err,我怎样才能使它红色 –

+0

You _must_将两个输出写入同一个流。 'System.err' for both,或者使用'System.out'。 –

+0

您是否尝试刷新流?每次打印后打印? –

2

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

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

然后,你必须更换:

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

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

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

+0

ok,但如何使system.out成为红色,cos我用system.err只是因为它给了我一个红色 –

+0

检查我的编辑! – Ivan

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

是保证打印“Hello世界“,但是

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

可能会打印“llo He World”或“HeWorld llo”。他们是2个不同的流。

+0

http://www.coderanch.com/t/379903/java/java/diff-between-System-out-System – user577898

1

每打印一条*语句后,使用相应的流的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打印。

0

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