我需要输出一个网格数组,该数组的输出为:
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;
}
}
}任何和所有的帮助都非常感谢。
发布于 2017-02-24 02:01:00
最简单的方法可能是使用二维数组。这是一个内部包含数组的数组。这些都是java原生的,可以这样声明:
int[][] nameOfArray = new int[numOfArrays][lengthOfEachArray]使用它们,您可以填充这个数组,使其包含1-4,第二个包含5-8,依此类推。然后,可以在同一行上打印出每个数组的第一个值,然后转到下一行,打印出该行上每个数组的第二个值,依此类推。如果你这样做了,你应该能够打印出你想要的东西。如果您需要有关2D数组语法的帮助,请参阅here以获得解释它们如何工作的好答案。祝你实现顺利!
发布于 2017-02-24 02:25:46
你可以这样做:
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。
您可能需要对其进行一些更改,以生成您正在寻找的输出。
发布于 2017-02-24 23:05:28
如果你不想使用模数,这是一种方法。它有一个嵌套的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();
}
}https://stackoverflow.com/questions/42422602
复制相似问题