Java 如何返回这样的多维数组?

Java 如何返回这样的多维数组?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,int[][]labelPathint n,int[][]points方法创建一个长度为n的新方形数组并返回。data0中的每一行描述二维数组中的一个点。此处,列0始终用于列索引,列1用于点的行索引。如果返回数组到达data0中的每个点,则返回值-1。在所有其他点,返回数组包含值n 例如:n=4和data0={{3,0},{0,1},{2,2}应该返回: [[4, 4, 4, -1], [-1, 4, 4, 4], [4, 4, -1, 4], [4, 4, 4, 4]] 到目前为止,我的代码

int[][]labelPathint n,int[][]points方法创建一个长度为n的新方形数组并返回。data0中的每一行描述二维数组中的一个点。此处,列0始终用于列索引,列1用于点的行索引。如果返回数组到达data0中的每个点,则返回值-1。在所有其他点,返回数组包含值n

例如:n=4和data0={{3,0},{0,1},{2,2}应该返回:

[[4, 4, 4, -1], [-1, 4, 4, 4], [4, 4, -1, 4], [4, 4, 4, 4]]
到目前为止,我的代码是:

int[][]标签路径int n,int[][]点{ int[]help=newint[n][n]; 对于int i=0;i 打印帮助[][]数组

创建4的帮助[n][n]数组

打印帮助[][]数组


您可以非常简单地如下所示:

int[][] nPoints = { { 3, 0 }, { 0, 1 }, { 2, 2 } };
int[][] ret = labelPath(4, nPoints);
for (int[] r : ret) {
    System.out.println(Arrays.toString(r));
}
印刷品

[4, 4, 4, -1]
[-1, 4, 4, 4]
[4, 4, -1, 4]
[4, 4, 4, 4]


您可以非常简单地如下所示:

int[][] nPoints = { { 3, 0 }, { 0, 1 }, { 2, 2 } };
int[][] ret = labelPath(4, nPoints);
for (int[] r : ret) {
    System.out.println(Arrays.toString(r));
}
印刷品

[4, 4, 4, -1]
[-1, 4, 4, 4]
[4, 4, -1, 4]
[4, 4, 4, 4]


您可以使用streams创建这样的阵列:

公共静态int[][]标签路径int n,int[][]点{ //创建一个新的填充有零的空二维数组 int[][]矩阵=新的int[n][n]; //将所有数组元素设置为“n” Arrays.setAllmatrix,第行->{ 数组.fillmatrix[row],n; 返回矩阵[行]; }; //迭代points数组并将相应的元素设置为“-1” Arrays.streampoints.forEachrow->矩阵[行[1]][行[0]]=-1; 收益矩阵; } //试验 公共静态无效字符串[]args{ int n=4; int[]data0={{3,0},{0,1},{2,2}; int[][]矩阵=labelPathn,数据0; //输出 Arrays.streammatrix.mapArrays::toString.forEachSystem.out::println; }
另请参见:

您可以使用streams创建这样的数组:

公共静态int[][]标签路径int n,int[][]点{ //创建一个新的填充有零的空二维数组 int[][]矩阵=新的int[n][n]; //将所有数组元素设置为“n” Arrays.setAllmatrix,第行->{ 数组.fillmatrix[row],n; 返回矩阵[行]; }; //迭代points数组并将相应的元素设置为“-1” Arrays.streampoints.forEachrow->矩阵[行[1]][行[0]]=-1; 收益矩阵; } //试验 公共静态无效字符串[]args{ int n=4; int[]data0={{3,0},{0,1},{2,2}; int[][]矩阵=labelPathn,数据0; //输出 Arrays.streammatrix.mapArrays::toString.forEachSystem.out::println; } 另见:

int[][] nPoints = { { 3, 0 }, { 0, 1 }, { 2, 2 } };
int[][] ret = labelPath(4, nPoints);
for (int[] r : ret) {
    System.out.println(Arrays.toString(r));
}
[4, 4, 4, -1]
[-1, 4, 4, 4]
[4, 4, -1, 4]
[4, 4, 4, 4]

public static int[][] labelPath(int n, int[][] nPoints) {
    int[][] arr = new int[n][n];
    int[] row = new int[n];
    for (int i = 0; i < n; i++) {
        row[i] = 4;
    }
    // set each row to an array of n elements.
    for (int i = 0; i < n; i++) {
        arr[i] = row.clone(); // new instance each time.
    }
    
    // make the changes
    for (int[] p : nPoints) {
        arr[p[1]][p[0]] = -1;
    }
    return arr;
}
[4, 4, 4, -1]
[-1, 4, 4, 4]
[4, 4, -1, 4]
[4, 4, 4, 4]