2017-02-23 82 views
0

我需要輸出的網格陣列,讓我的輸出:打印電網與特定的輸出

1 5 9 13 17 21 
2 6 10 14 18 22 
3 7 11 15 19 23 
4 8 12 16 20 24 

這是我在這一刻代碼:

public static void printGrid(){ 
    int x = 0, y = 0; 
    int[][] grid = new int[4][6]; 
    for(int i=1; i<=(4*6); i++){ 
     x++; 
     if(i%4 == 0){ 
      y++; 
      x = 0; 
     } 
    } 

} 

任何與所有的幫助,非常感謝。

+2

您現在的輸出是什麼,您是否堅持打印網格數據? – RamPrakash

+0

我還沒有得到任何輸出,我仍然試圖找出如何輸出結果。從好的一面來看,它現在會編譯出來,而這之前沒有做過。 – DPabst

回答

0

最簡單的方法是使用二維數組。這是一個數組,其中包含數組。這是原產於爪哇,並且可以聲明如下所示:

int[][] nameOfArray = new int[numOfArrays][lengthOfEachArray] 

使用這些,您可以填寫此陣,使得陣列包含1-4,第二個包含5-8,依此類推。然後,您可以在同一行上打印每個數組的第一個值,轉到下一行,在該行上打印出每個數組的第二個值,依此類推。如果你這樣做,你應該能夠打印出你想要的。如果您需要2D數組語法的幫助,請參閱here以獲得解釋其工作原理的良好答案。祝你好運!

0

你可以做這樣的事情:

int x = 0, y = 0, sizeX = 5, sizeY = 5; 
int[][] name = new int[sizeX][sizeY] 
for(int i = 1; i <= (sizeX*sizeY); i++) {   
    x++; 
    if(i%sizeX == 0) { 
     y++; 
     x = 0; 
    } 
    name[x][y] = numberAtThisPoint; 
} 

這也是一個非常有效的方法,因爲它僅使用一個for循環,但是你必須使用模量。

隨着模量你可以通過你多少列要「SIZEX」和檢查,以查看使電網的下一行,如果當前列環路上的「i」等於0

您可能需要稍微更改一下才能生成您正在查找的輸出。

0

如果你不想使用模數,這是你可以做到的一種方法。它有一個嵌套for循環,所以在你將有一個〜O(n^2)時間複雜度。 (不包括打印數組的方法,但是您可以輕鬆地將打印調用放入getGrid方法中)

public static int[][] getGrid(int height, int length) { 
    int[][] grid = new int[height][length]; 
    int k; 
    for (int i = 0; i < height; i++) { 
     k = i; 
     for (int j = 0; j < length; j++) { 
      grid[i][j] = k+1; 
      k += height; 
     } 
    } 
    return grid; 
} 

public static void printGrid(int[][] grid) { 
    for(int i = 0; i < grid.length; i++) { 
     for(int j = 0; j < grid[i].length; j++) { 
      System.out.print(grid[i][j] + " "); 
     } 
     System.out.println(); 
    } 
}