我需要输出一个网格数组,它给出一个输出:
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;
}
}
}
非常感谢任何和所有帮助。
答案 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();
}
}