2010-04-18 61 views
2

我刚创建与100个初始化值的数组10个元素,我想要一个阵列元件打印出10个元素,每行所以这将是财产以后这样打印每行

0 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 
...26 

这是代码我用,我设法做它第10个元素,但打印numbers[i]其中之前,我无法弄清楚如何做到这一点的休息

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] + " "); 
    } 
} 
+0

拼写错误: “多多包涵” – Viet 2010-04-18 11:05:17

+1

@Viet除非是[邀请脱衣服(http://english.stackexchange.com/a/1270/88343) “忍着我”是正确的。 – 2014-08-18 20:57:10

回答

4
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] + " "); 
    } 

这将打印一个换行符和i > 0%是mod运算符;它会返回余数,如果i/10。所以i % 10 == 0i = 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每行。每行末尾有一段时间(.),一行之间有一个逗号(,)。

+0

+1为大回答! – 2010-04-18 11:53:02

1

所有你需要做的就是在每十个数字后打印出一个换行符。

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

唯一的不足是你还应该记得在最后打印一个换行符,但只有当这不是你刚刚打印的最后一个东西。 – 2010-04-18 07:46:45

+0

OP特别说他有100个要打印的元素,所以在他的情况下,一切都应该正常工作。当然,要处理任意大小的阵列,必须采取不同的方法。我会在'(i!= 0 && i%10 == 0)'时打印换行符,如果'numbers.length!= 0'则在循环后面打印。 – 2010-04-18 08:17:37

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; 
    } 
}