如何复制数组维

时间:2019-01-08 19:37:50

标签: java

这是我的第一篇文章,我总是试图找到解决方案,但我没有找到它。

我需要将一个array [] [] []复制到copy [] [] [],但是复制的长度必须比数组长。

我写了这个,但是没有像0那样复制,只是像NULL这样复制并产生了异常。

  1. 塔马尼奥市长的多维数组的肠壁菌。

    int datos, datos2, datos3, datos4;
    
    System.out.println("De cuantos elementos quiere que sea el array?");
    datos=leerInt();
    System.out.println("De cuantos elementos quiere que sea el array bidimensional?");
    datos2=leerInt();
    System.out.println("De cuantos elementos quiere que sea el array tridimensional?");
    datos3=leerInt();
    int valor[][][]=new int[datos][datos2][datos3];
    
    
    
    for (int i=0;i<valor.length;i++){
        for (int j=0;j<valor[i].length;j++){
            for (int k=0;k<valor[i][j].length;k++){
                System.out.println("Introduce el valor para el array"+(i+1)+" de la parte bidimensional "+(j+1)+" de la parte tridimensional "+(k+1));
                datos4=leerInt();
                valor[i][j][k]=datos4;
            }
        }
    }
    
    int copia[][][]=Arrays.copyOf(valor, valor.length+2);
    
    for (int i=0; i < copia.length; i++) {
        for (int j=0; j < copia[i].length; j++) {
            for (int k=0; k < copia[i][j].length; k++) {
                System.out.println("Los valores copiado es: "+ copia[i][j][k]);
    
            }
        }
    }
    

2 个答案:

答案 0 :(得分:1)

实际上,答案很简单,您只需要做以下三件事:

  • 创建一个新数组,直到最后一个维度,就像您对int valor[][][]=new int[datos][datos2][datos3];所做的一样
  • 上面的代码为您提供了“ 3 dim”数组,其中 all 元素已预先设置为0(因为它是一个int数组,所以里面不能有NULL值)
  • 然后您迭代“旧”数组,对于每个值,您“简单地”决定在更大的新数组中应该将其移至何处

新数组的尺寸以及所需的映射函数完全取决于您的要求。我们不能告诉你。您打算解决某种问题,因此确定所需的“新”元素数量以及要在旧值中精确复制的位置完全取决于您要实现的 。您没有告诉我们的。

答案 1 :(得分:1)

好的,感谢@GhostCat我解决了我的问题

int datos, datos2, datos3, datos4;

    System.out.println("De cuantos elementos quiere que sea el array?");
    datos=leerInt();
    System.out.println("De cuantos elementos quiere que sea el array bidimensional?");
    datos2=leerInt();
    System.out.println("De cuantos elementos quiere que sea el array tridimensional?");
    datos3=leerInt();
    int valor[][][]=new int[datos][datos2][datos3];
    int copia[][][]=new int[datos][datos2+1][datos3+2];



    for (int i=0;i<valor.length;i++){
        for (int j=0;j<valor[i].length;j++){
            for (int k=0;k<valor[i][j].length;k++){
                System.out.println("Introduce el valor para el array"+(i+1)+" de la parte bidimensional "+(j+1)+" de la parte tridimensional "+(k+1));
                datos4=leerInt();
                valor[i][j][k]=datos4;
            }
        }
    }

    for (int i=0;i<valor.length;i++){
        for (int j=0;j<valor[i].length;j++){
            for (int k=0;k<valor[i][j].length;k++){
                copia[i][j][k]=valor[i][j][k];
            }
        }
    }


    for (int i=0; i < copia.length; i++) {
        for (int j=0; j < copia[i].length; j++) {
            for (int k=0; k < copia[i][j].length; k++) {
                System.out.println("Los valores copiado es: "+ copia[i][j][k]);

            }
        }
    }