使用特定输出打印网格

时间:2017-02-23 17:36:03

标签: java for-loop grid

我需要输出一个网格数组,它给出一个输出:

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 个答案:

答案 0 :(得分:0)

你可以这样做:

 function DashboardViewModel() {
...
self.currentRowListener = function (event, ui) {
Router.rootInstance.go('customers');
}
...

这也是一种相当有效的方法,因为它只使用一个for循环,但是你必须使用模数。

使用模数,您可以通过获取所需的列数来生成网格的下一行&#34; sizeX&#34;并检查循环所在的当前列是否在&#34; i&#34;等于0。

您可能需要稍微更改它才能生成您正在寻找的输出。

答案 1 :(得分: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();
    }
}