在每行上打印一个包含10个元素的数组元素

时间:2010-04-18 07:36:34

标签: java

我刚创建了一个包含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] + " ");
    }
}

3 个答案:

答案 0 :(得分:5)

    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 == 0i > 0之前打印换行符。 %是mod运算符;如果i / 10,则返回余数。 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个。每行末尾有一个句点(.),一行中有一个逗号(,)。

答案 1 :(得分:3)

为什么你使用2个嵌套循环,你只需要记住输出换行符所需的位置?对两个循环使用相同的变量i也不会达到预期效果。

怎么样:

for (i = 0; i < numbers.length; i++) {

    System.out.print(numbers[i] + " ");
    count++;

    if (count == 10)
        System.out.print("\n");
        count = 0;
    }
}

答案 2 :(得分:1)

您要做的就是每十个数字后打印一个换行符。

for (i = 0; i < numbers.length; ++i)
{
    System.out.print(number[i]);
    if (i % 10 == 9)
    {
        System.out.println();
    }
    else
    {
        System.out.print(" ");
    }
}