以下是我遇到问题的代码:
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。
count = 584;
不超过它时,它可以工作。 感谢。
答案 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一个类似的问题。