java中如何将二维数组从一个拷贝到另一个

java中如何将二维数组从一个拷贝到另一个,java,Java,我想知道将二维数组从临时数组复制到原始数组的正确方法是什么。 数组大小在程序开始时未知,用户稍后将对其进行设置。 代码如下: 私有静态无效复制矩阵(整数原点矩阵[],整数复制矩阵[],整数行,整数 (列) { for ( int i = 0 ; i < row-1; ++i) { for (int j = 0; j < column; j++) { origin_Matrix[i][j] =

我想知道将二维数组从临时数组复制到原始数组的正确方法是什么。 数组大小在程序开始时未知,用户稍后将对其进行设置。 代码如下:

私有静态无效复制矩阵(整数原点矩阵[],整数复制矩阵[],整数行,整数 (列)

{

      for ( int i = 0 ; i < row-1; ++i)
      {
          for (int j = 0; j < column; j++)
          {
              origin_Matrix[i][j] = copy_Matrix[i][j]; 

          }
      }
for(int i=0;i
}


我知道这是错误的,请帮助。

您使用原语代替原语是有原因的吗?如果不是,我会用那些。它们经过优化,并为操作提供了相当健壮的API。

Java中不需要前缀增量。另外,您不需要在Java中传递行和列计数(这只会留下出错的空间)。此外,还存在一个函数System.arraycopy,该函数的效率至少应与一次复制一个文件的效率相同,如果不是更高的话

private static void copy_Matrix(int origin_Matrix[][] , int copy_Matrix[][])
{
    /* assert origin_Matrix.length == copy_Matrix.length */
    for ( int i = 0 ; i < origin_Matrix.length; i++)
    {
        /* assert origin_Matrix[i].length == copy_Matrix[i].length */
        System.arraycopy(origin_Matrix[i], 0, copy_Matrix[i], 0, origin_Matrix[i].length);
    }
}
private static void copy_矩阵(int-origin_矩阵[],int-copy_矩阵[])
{
/*断言原点\u Matrix.length==复制\u Matrix.length*/
对于(int i=0;i

请注意,您应该了解Java集合(如List/ArrayList或Vector),并有意识地决定,在您的情况下,int数组的轻微性能提升是必要的,而不是集合提供的额外可读性和便利性。

您最好以以下内容结束:

private static int[][] copy_Matrix(int origin_Matrix[][])
{
    int copy[][] = new int[origin_Matrix.length][origin_Matrix[0].length];
    for ( int i = 0 ; i < origin_Matrix.length; ++i)
    {
        System.arraycopy(origin_Matrix[i], 0, copy[i], 0, origin_Matrix[i].length);
    }
    return copy;
}
private static int[]copy_Matrix(int origin_Matrix[]
{
int copy[][]=new int[origin_Matrix.length][origin_Matrix[0.length];
对于(int i=0;i
@Eden

代码并不是那么完美;你为什么要做
i

首先检查循环?我想你应该做
I
检查

此外,您不需要显式传递大小。
可以在数组上使用.length字段来获取其大小。

int数组在某些操作中有其位置。例如,在做疯狂的欧拉投影问题时,我使用向量代替数组,因为它更简单,而且我认为它已经足够优化,不会产生太大的差异;在对速度感到失望之后,我切换到int数组,这是一个巨大的差异。然而,我同意Edan应该了解Java集合,并有意识地决定使用INT数组更好。在本例中,他似乎只是简单地从C/C++移植代码,从前缀运算符和行、列参数可以看出这一点。