3

如何在Java中使用给定的数字将行和列添加到前后的现有数组中。

例如 :-

let x =  1  2  3
         4  5  6
         7  8  9   

现在想要 2 行和列的零:

   x =  0 0 0 0 0 0 0 
        0 0 0 0 0 0 0
        0 0 1 2 3 0 0
        0 0 4 5 6 0 0
        0 0 7 8 9 0 0
        0 0 0 0 0 0 0
        0 0 0 0 0 0 0

所以,我想知道在 java 中是否有现有的方法或方法可以做到这一点,就像在 matlab 中使用名为padarray(x,[r,c]).

4

2 回答 2

5

您根本不能将行或列添加到二维数组。数组是固定大小的。您可以使用动态数据结构,例如List<List<Integer>>.

您还可以使用该方法创建一个新数组(大于或小于当前数组)Arrays.copyOf(int[] original, int newLength);

你的数组x就像:

  int[][] x = new int[][]{{1,2,3}, {4,5,6}, {7,8,9}};

没有一种方法(我知道)可以将其转换为您想要的格式。您必须创建一个方法来创建一个新的二维数组并将您的值放在正确的索引处。

于 2013-01-07T10:57:05.230 回答
2

下面是一些代码,它采用您想要填充的 2D 数组、您想要填充的内容以及数组周围有多少个焊盘(您的数组将是 2,因为您希望您的数组被 2 层 0 包围)。

public static int[][] padArray(int[][] arr, int padWith, int numOfPads) {
    int[][] temp = new int[arr.length + numOfPads*2][arr[0].length + numOfPads*2];
    for (int i = 0; i < temp.length; i++) {
        for (int j = 0; j < temp[i].length; j++) {
            temp[i][j] = padWith;
        }
    }
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            temp[i+numOfPads][j+numOfPads] = arr[i][j];
        }
    }
    return temp;
}
于 2017-05-08T18:46:56.817 回答