每行打印10个整数

3

我有这段代码。这段代码创建了一个大小为1,000,000的数组,用于存储随机生成的整数。我的问题是我想每行打印10个整数,但输出结果很奇怪,我不知道原因。我调试了代码并发现代码应该按预期工作。尽管如此,它表现得很奇怪。如果有人能帮帮我,我将非常感激。这是我的代码:

Integer[] list = new Integer[1000000];
for(int i = 0 ; i < list.length ; i++)
list[i] = (int)(Math.random() * 1000);
 
//print 10 integers per line
for(int i = 0 ; i < list.length ; i++){
if( (i+1) % 10 == 0)
  System.out.printf("%-5d\n" , list[i]);
else
  System.out.printf("%-5d" , list[i]);
}

我附上了输出的截图。 在这里输入图片描述 顺便说一下:我使用的是Intellij IDEA。

2
对我来说没问题。你能否请编辑你的帖子并确保发布一个最小可复现示例(MCVE)? - Robert
1个回答

5
控制台循环缓冲区大小为1024 KB(Intellij idea的默认值),您可以在“设置->编辑器->常规->控制台”中查看。因此,您的1000000个随机数超过了这个大小。在程序执行后,您在控制台的第一行看到的并不是真正的第一行,它实际上是在处理过程中的某个位置被截断了。如果您打印1000个数字,您会发现您的代码运行良好。
编辑:

在上述设置位置中,有一个选项覆盖控制台缓冲区大小,点击复选框,增加缓冲区大小。当大小足够大时,您可以看到每行10个数字的形式。


1
您可以在“设置 -> 编辑器 -> 通用 -> 控制台”中覆盖循环缓冲区大小。 - Sercan
我重写了它,输出结果是一样的 @Sercan - Hussein Eid
我刚刚检查了一下,发现它打印了20,560行,每行有10个数字,所以总共是205,600个数字。为了安全起见,应该是默认尺寸的6倍,那就是6500。 - Sercan
我把它设为10000,然后它正常工作了。非常感谢你的帮助。非常非常感谢 :) @Sercan - Hussein Eid
不客气,我很高兴能帮到你 :) - Sercan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接