【问题标题】:System.out.println , System.err.printlnSystem.out.println , System.err.println
【发布时间】:2012-05-16 07:08:11
【问题描述】:

我有这个代码:

 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 或 System.err.
  • 是的,但我需要把一些词变成红色,所以我使用了 system.err

标签: java


【解决方案1】:

streams out 和 err 是独立的。

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

【讨论】:

  • 我需要输出为红色,所以我使用了 system.err ,请问我怎样才能使它变成红色
  • 必须将两个输出写入同一个流。两者都使用System.err,或者两者都使用System.out
  • 您是否尝试过刷新流?每次调用打印后?
【解决方案2】:

解决它

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.err 因为它给了我红色
  • @WilliamKinaan,然后使用 System.err,但适用于所有人
  • @WilliamKinaan,或者试试 System.out.println("\u001B31;1mhello world!");以红色打印,但未经测试
  • 您是否尝试在每次打印调用后刷新流?
【解决方案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 个不同的流。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

      那你要替换:

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

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

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

      【讨论】:

      • 好的,但是如何将 system.out 设为红色,因为我使用 system.err 只是因为它给了我红色
      【解决方案6】:

      在每个 print* 语句之后,使用相应流的刷新方法。这可能会给你想要的输出。

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          猜你喜欢
          • 2010-12-25
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-05
          • 2017-05-25
          • 1970-01-01
          相关资源
          最近更新 更多