程序为println(String s)提供正确的输出;但不打印(String s);为什么?

时间:2013-03-04 15:02:19

标签: java eclipse string printing

以下是我遇到问题的代码:

public class testOutput {

    public static void main(String[] args) throws Exception {

        int count = 50000;
        String s = "Vinjith";

        for(int i=0;i<count;i++) {
            System.out.print(s);  // change this to println(s); and it works! 
            System.out.flush();
        }
    }

}

我正在使用Eclipse Galileo - jdk 1.6 / jre6。

  • 我对控制台输出没有限制。
  • 我也尝试过与BufferedWriter相同的程序:没有工作
  • 当变量count = 584;不超过它时,它可以工作。
  • 当我使用System.out.print(s)时,我没有得到任何输出;但是当我使用System.out.println(s);我得到50000行的字符串&#39; Vinjith&#39;。

感谢。

3 个答案:

答案 0 :(得分:2)

这是因为在同一行上有太多字符,Eclipse在其控制台上不支持该字符(您将在控制台上看不到任何打印)。在命令行上尝试相同的代码,它应该可以工作。

答案 1 :(得分:1)

这是因为您在Eclipse控制台上打印的字符的长度超出了限制。

试试这个并查看它是否打印。

System.out.print(s);  // change this to println(s); and it works!
System.out.println();
System.out.flush();

另外,关于限制问题,请试一试。在首选项 - &gt;运行/调试 - &gt;控制台,会出现一个名为固定宽度控制台的复选框。其最大限制为1000。尝试将其设为1000并运行原始代码,如下所示。你会看到它打印出一些字符,其余的则会抛出Internal Error

System.out.print(s);  // change this to println(s); and it works!
System.out.flush();

答案 2 :(得分:0)

你试过这个:

    for(int i=0;i<count;i++) {
        System.out.print(s);  // change this to println(s); and it works! 
    }
    System.out.println("---done");
    System.out.flush();

当您尝试计数值(100,500,1000,2000,10000等)时会发生什么?

请发布输出时的输出和'计数'。

我之前已经研究过flush()的问题,这归结为你的操作系统内部如何处理缓冲区。大多数JRE只定义接口,然后依靠操作系统来实现实际行为,在某些情况下它会变得奇怪。 See my answer一个类似的问题。