反转 3 x 3 数组并显示它 Java

Inverting a 3 x 3 Array and displaying it Java

所以,我正在尝试创建一个程序,在二维数组中捕获 9 个数字,大小为 3 x 3。在捕获所有数字后,将它们重新排列、反转并显示。

因此,如果用户输入:

1 2 3 
4 5 6
7 8 9

反过来应该是这样的:

9 8 7 
6 5 4
3 2 1

到目前为止我有这个:

public class Reversenumber {


    public static void main(String[] args) {

        Scanner kb = new Scanner(System.in);
        int[][] array1 = new int[3][3];
        int val1 = 0;
        int val2 = 0;
        int[][] array2 = new int[3][3];
        int val3 = 0;
        int val4 = 0;

        for (val1 = 0;val1<3; val1++){
            for (val2 = 0;val2<3; val2++){
            System.out.println("Please type number for column "+(val1+1)+" and row "+(val2+1));
            array1[val1][val2] = kb.nextInt();
            }
        }


        System.out.println("\nThe inverse of this array is:");
        for(val1 = 0;val1<3; val1+=1){
           for (val2 = 0;val2<3; val2+=1){
               System.out.print(array1[val1][val2]+" ");
           }
        System.out.println("");
        }
    }
}

我遇到的问题是输出数组的逆。第一个 for 循环完美地捕获了信息,但第二组 for 循环在 3x3 数组中显示相同的信息,但不是倒置的。帮助任何人?

假设你的意思是像这样反转:

1 2 3
4 5 6
7 8 9

1 4 7
2 5 8
3 6 9

就像保持循环一样简单,但交换数组之间的坐标:

public static void main(String[] args) {

    Scanner kb = new Scanner(System.in);
    int[][] array1 = new int[3][3];
    int val1 = 0;
    int val2 = 0;
    int[][] array2 = new int[3][3];
    int val3 = 0;
    int val4 = 0;

    for (val1 = 0; val1 < 3; val1++) {
        for (val2 = 0; val2 < 3; val2++) {
            System.out.println("Please type number for column " + (val1 + 1) + " and row " + (val2 + 1));
            array1[val1][val2] = kb.nextInt();
        }
    }

    System.out.println("\nOriginal array is:");
    for (val1 = 0; val1 < 3; val1 += 1) {
        for (val2 = 0; val2 < 3; val2 += 1) {
            System.out.print(array1[val1][val2] + " ");
        }
        System.out.println("");
    }

    System.out.println("\nInverted array is:");
    for (int x = 0; x < 3; x += 1) {
        for (int y = 0; y < 3; y += 1) {
            System.out.print(array1[y][x] + " ");
        }
        System.out.println("");
    }

    System.out.println("\nThe Reversed array is:");
    for (int x = 2; x >= 0; x -= 1) {
        for (int y = 2; y >= 0; y -= 1) {
            System.out.print(array1[x][y] + " ");
        }
        System.out.println("");
    }
}

编辑:我在下面的评论中添加了您询问的相反场景。您实际上期望这样的输出:

9 8 7
6 5 4
3 2 1

我希望你不介意,我完全改变了周围的变量,因为它们令人困惑。也改变了你输入东西的方式。

    Scanner kb = new Scanner(System.in);
    int[][] array1 = new int[3][3];
    int[][] array2 = new int[3][3];

    for (int y = 0; y < array1.length; y++) {
        System.out.println("input 3 numbers for row " + (y + 1));
        for (int x = 0; x < array1[y].length; x++) {
            array1[y][x] = kb.nextInt();
        }
    }


    System.out.println("\nThe inverse of this array is:");
    for (int y = array1.length; --y >= 0;) {
        for (int x = array1[y].length; --x >= 0;) {
            System.out.printf("%3d", array1[y][x]);
        }
        System.out.println();
    }

输出

input 3 numbers for row 1
1 2 3
input 3 numbers for row 2
4 5 6
input 3 numbers for row 3
7 8 9

The inverse of this array is:
  9  8  7
  6  5  4
  3  2  1

所以不是分别输入每个,而是将 3 放在同一行并在它们之间放一个 space。