在每行上打印一个包含10个元素的数组元素
我刚刚创建了一个包含100个初始化值的数组,我想在每行打印出10个元素,所以它会像这样
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...26
这是我使用的代码,我设法为前10个元素做了但我无法弄清楚如何做其余的
public static void main(String[] args) { int[] numbers = { 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; int i, count = 0; for (i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); count++; if (count == 9) for (i = 9; i < numbers.length; i++) System.out.println(numbers[i] + " "); } }
int[] numbers = new int[100]; for (int i = 0; i < numbers.length; i++) { if (i % 10 == 0 && i > 0) { System.out.println(); } System.out.print(numbers[i] + " "); }
这会在打印numbers[i]
之前打印换行符,其中i % 10 == 0
且i > 0
。 %
是mod运算符; 如果i / 10
它返回余数。 所以当i % 10 == 0
i = 0, 10, 20, ...
时, i % 10 == 0
i = 0, 10, 20, ...
。
至于你的原始代码,你可以通过一些修改使它工作如下:
int count = 0; for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); count++; if (count == 10) { System.out.println(); count = 0; } }
基本上, count
是您在此行中打印的数字。 一旦达到10,就打印换行符,然后将其重置为0 ,因为您正在开始一个新行,而对于该行,您还没有打印任何数字(尚未)。
请注意,在上述两种解决方案中,每行末尾都会打印一个额外的空间。 这是一个更灵活的实现,只在必要时才使用分隔符(水平和垂直)。 它只是稍微复杂一些。
static void print(int[] arr, int W, String hSep, String vSep) { for (int i = 0; i < arr.length; i++) { String sep = (i % W != 0) ? hSep : (i > 0) ? vSep : ""; System.out.print(sep + arr[i]); } System.out.println(vSep); }
如果你这样说,就像print(new int[25], 5, ",", ".\n");
,然后它将打印25个零,每行5个。 在每一行的末尾有一个句点( .
),在一行的零之间有一个逗号( ,
)。
为什么你使用2个嵌套循环,你只需要记住输出换行符所需的位置? 对两个循环使用相同的变量i
也不会达到预期效果。
怎么样:
for (i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); count++; if (count == 10) System.out.print("\n"); count = 0; } }
您所要做的就是在每十个数字后打印一个换行符。
for (i = 0; i < numbers.length; ++i) { System.out.print(number[i]); if (i % 10 == 9) { System.out.println(); } else { System.out.print(" "); } }