首页 > 解决方案 > 如果调用 matrix2.getElement(int y, int x) 我在 getElement 方法中键入什么

问题描述

对于这个任务,我们正在编写一个不可变类,它实现了一个矩阵接口,该接口具有一些矩阵函数,加法,减法乘法......我们克隆提供的数据以创建一个不可变的新矩阵。接口中有一个 getElement(int y, int x) 方法,它返回一个 int。当提供的只是索引时,我无法弄清楚如何提取元素。我知道该方法是在矩阵对象上调用的,因此这是我们从我需要的 getElement 方法中的关键字中提取的矩阵。

public class Practice {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);
        int[][] data2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        Practice m1 = new Practice(data2);

        m1.getElement(0, 1);

    }

    public Practice(int[][] matrix){
        cloneMatrix(matrix);
    }

    public static int[][] cloneMatrix(int[][] data) {

         int[][] newMatrix = new int[data.length][data[0].length];
         for (int i = 0; i < data.length; i++) {
             System.arraycopy(data[i], 0, newMatrix[i], 0, data[i].length);
         }
         return newMatrix;
    }

    public int getElement(int y, int x) {

        int !!!WHAT GOES HERE!!! [y][x];
        return j;
    }

}

标签: javaarraysmethodsget

解决方案


您需要更改一些代码以使其正常工作:)

public class Practice {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int[][] data2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        Practice m1 = new Practice(data2);

        m1.getElement(0, 1);
    }

    public int[][] myMatrix; // Changed this line

    public Practice(int[][] matrix) {
        this.myMatrix = cloneMatrix(matrix); // Changed this line
    }

    public static int[][] cloneMatrix(int[][] data) {
        int[][] newMatrix = new int[data.length][data[0].length];
        for (int i = 0; i < data.length; i++) {
            System.arraycopy(data[i], 0, newMatrix[i], 0, data[i].length);
        }
        return newMatrix;
    }

    public int getElement(int y, int x) {
        return this.myMatrix[y][x]; // Changed this line
    }
}

推荐阅读