4

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

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 行字符串“Vinjith”。

谢谢。

4

3 回答 3

2

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

于 2013-03-04T15:11:56.497 回答
1

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

试试这个,看看它是否打印。

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

另外,关于限制问题,请尝试一下。在首选项 -> 运行/调试 -> 控制台中,会有一个名为Fixed Width Console的复选框。它的最大限制是1000。尝试制作1000并运行您的原始代码,如下所示。你会看到它打印了一些字符,其余的则抛出一个Internal Error.

System.out.print(s);  // change this to println(s); and it works!
System.out.flush();
于 2013-03-04T15:21:32.847 回答
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 只定义接口,然后依赖操作系统来实现实际行为,在某些情况下它会变得很奇怪。 请参阅我对类似问题的回答。

于 2013-03-04T15:11:37.500 回答