【问题标题】:Inverting a 3 x 3 Array and displaying it Java反转 3 x 3 数组并显示它 Java
【发布时间】:2015-12-10 01:25:11
【问题描述】:

所以,我正在尝试创建一个程序,该程序在 2D 数组中捕获 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 数组中显示相同的信息,但没有反转。帮助任何人?

【问题讨论】:

  • 您能否更具体地说明“反转”数组的确切含义?您的意思是找到 3x3 矩阵的逆矩阵吗?还是比这更简单?
  • 你能举例说明输入和输入是什么样的吗?
  • 我可能应该使用反转这个词而不是反转而不是去 1 2 3 4 5 6 7 8 9 in a 3 x 3 它应该反转去 9 8 7 6 5 4 3 2 1 in一个 3 x 3

标签: java arrays inverse


【解决方案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 放在同一行并在它们之间放置一个空格。

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

    • 我可能应该使用反转这个词而不是反转而不是去 1 2 3 4 5 6 7 8 9 in a 3 x 3 它应该反转去 9 8 7 6 5 4 3 2 1 in一个 3 x 3
    • 感谢迈克的帮助!
    • 不客气。如果这是您想要的,请不要忘记接受该答案:)。
    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多