0

我有一个二维数组,我只需要将第一行复制到另一个相同大小的数组中。这样做的最佳方法是什么?我试过这个:

public static int[][] buildCME(int[][] array){

    int [][] arrayCME = new int[array.length][array[0].length];


    for(int y = 1; y < array.length; y++)
    {

        for (int x = 0; x < 1; x++)
        {

            arrayCME[y][x] = array[y][x];

        }
    } 

然而,这只是给我第一行的 0,我认为这与我的 int 初始化有关。我创建了这个 for 循环,因为我认为它比在普通 for 循环中创建一个 if 语句来解释整个二维数组更容易。谢谢您的帮助!

4

2 回答 2

5

您的代码从第二行开始复制第一列(您的内循环是 x < 1)(外循环从 1 开始)。如果要复制第一行,请执行

 for (int x = 0; x < array[0].length; x++)
 {
      arrayCME[0][x] = array[0][x];
 }

为了更有效地执行此操作,您可能需要查看System.arraycopy

System.arraycopy(array[0],0,arrayCME[0],0,array[0].length);

System.arraycopy should perform a more efficient copy since it is a native method. Furthermore, some JVMs like for example the HotSpot JVM treat this method as an intrinsic. A JVM will usually substitute calls to intrinsics methods with architecture specific code, which in the case of arraycopy might be machine code that copies memory directly.

于 2012-11-04T19:17:45.147 回答
2

这是因为您的外部循环从 1 开始,而不是 0,并且由于数组从 0 开始,所以第一行将始终保持不变。

于 2012-11-04T19:04:58.177 回答