2010-04-18 87 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; 
    } 
}