这是我的第一篇文章,我总是试图找到解决方案,但我没有找到。
我需要将一个数组[][][]复制到副本[][][],但副本需要比数组更长。
我写了这个,但不要像 0 一样复制,只是像 NULL 一样复制并异常(exception)。
将三维立体阵列复制到其他主要塔马诺。
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]); } } }
最佳答案
其实答案很简单,你只需要做这三件事:
- 创建一个新数组,直到最后一个维度,就像您已经使用
int valor[][][]=new int[datos][datos2][datos3]; 所做的那样;
- 上面给出了“3 dim”数组,其中所有元素预先设置为 0(因为它是一个 int 数组,其中不能有 NULL 值)<
- 然后迭代“旧”数组,对于每个值,您“简单地”决定它应该在新的、更大的数组中存放到哪里
新数组的维度以及您需要的映射函数完全取决于您的要求。我们不能告诉你这一点。您打算解决某种问题,因此确定您需要多少"new"元素,以及您想要将旧值复制到哪里,完全取决于您想要实现的目标。你没有告诉我们。
关于java - 如何复制数组维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54098615/