Java 我如何让网格从上到下开始

Java 我如何让网格从上到下开始,java,Java,我需要创建一个网格,用户可以通过添加行和列r x c来生成该网格,但我需要网格从升序到降序 我创建了一个能够创建网格的方法: static void createGrid(int n, int m){ int grid[][] = new int[n][m]; for(int i = grid.length - 1; i >= 0; i--) { System.out.println(); for(int j = 0; j < grid

我需要创建一个网格,用户可以通过添加行和列r x c来生成该网格,但我需要网格从升序到降序

我创建了一个能够创建网格的方法:

static void createGrid(int n, int m){
    int grid[][] = new int[n][m];
    for(int i = grid.length - 1; i >= 0; i--) {
        System.out.println();
        for(int j = 0; j < grid.length; j++) {
            grid[i][j] = i * n + j + 1;
            System.out.print(grid[i][j] + "\t");
        }
}}
预期输出应为

1   2   3   
4   5   6   
7   8   9

将外部for循环更改为:

for(int i = grid.length - 1; i >= 0; i--) {
致:


将外部for循环更改为:

for(int i = grid.length - 1; i >= 0; i--) {
致:


让你的外环朝另一个方向走。正如@Thomas thanky Thomas!所指出的,您的代码还有一些其他问题!。只有当两个输入值相同时,代码as-is才起作用。以下是代码,其中包含三个必要的更改,以使其能够正确生成非方形网格:

static void createGrid(int n, int m){
    int grid[][] = new int[n][m];
    for(int i = 0 ; i < n; i++) {
        System.out.println();
        for(int j = 0; j < m; j++) {
            grid[i][j] = i * m + j + 1;
            System.out.print(grid[i][j] + "\t");
        }
    }
}

public static void main(String... args) {
    createGrid(4, 6);
}
我一直在学习Java流。我利用这个机会尝试在一行中使用一个流来执行此操作。此代码的作用与我的第一个版本相同:

static void createGrid(int n, int m) {
    IntStream.range(0, n * m).mapToObj(i -> (i+1) + ((i%m == m-1)? "\n" : "\t")).forEach(System.out::print);
}

让你的外环朝另一个方向走。正如@Thomas thanky Thomas!所指出的,您的代码还有一些其他问题!。只有当两个输入值相同时,代码as-is才起作用。以下是代码,其中包含三个必要的更改,以使其能够正确生成非方形网格:

static void createGrid(int n, int m){
    int grid[][] = new int[n][m];
    for(int i = 0 ; i < n; i++) {
        System.out.println();
        for(int j = 0; j < m; j++) {
            grid[i][j] = i * m + j + 1;
            System.out.print(grid[i][j] + "\t");
        }
    }
}

public static void main(String... args) {
    createGrid(4, 6);
}
我一直在学习Java流。我利用这个机会尝试在一行中使用一个流来执行此操作。此代码的作用与我的第一个版本相同:

static void createGrid(int n, int m) {
    IntStream.range(0, n * m).mapToObj(i -> (i+1) + ((i%m == m-1)? "\n" : "\t")).forEach(System.out::print);
}

2D数组应该已经有了正确的元素,您只需在行上向后迭代,并在运行中打印它们。尝试i=0;iSide注意:您声明有一个RxC网格,即列数可以不同于行数。因此,如果r!=C使用j