更改数组中的值会更改处理中其他数组中的值
Altering a value in array changes value in other array in Processing
我知道这个问题之前有人问过 Java,但我目前正在尝试处理,none 的解决方案对我有用。我有两个数组:
int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = {{7,8,9},{10,11,12}};
arrayCopy(array1,array2);
array2[0][1] = 100;
println(array1[0][1]);
//prints 100 despite never altering it
我尝试过的事情:
//For Loop
for(int i = 0; i < array1.length; i++){
array2[i] = array1[i];
}
//Cloning
array2 = array1.clone();
如果您参考 arrayCopy
函数的文档,它说
If arrayCopy
is used with a two (or three or more) dimensional array,
it will only copy the references at the first level, because a two dimensional array is simply an "array of arrays".
所以基本上修改 array2
中的任何数组也会修改 array1
中的相应数组。但是,如果您使用一维数组,情况就不会如此。
如果您希望将 array1
的每个数组复制到 array2
而没有任何上述行为,那么您需要创建一个嵌套的 for
循环来遍历每个数组array1
的元素(锯齿状数组)并将其内容(整数)复制到另一个数组中。
示例:
int[][] sequence = {{1, 2, 3},
{4, 5, 6}};
int[][] accumulator = new int[sequence.length][3];
for (int i = 0; i < sequence.length; i++)
for (int j = 0; j < sequence[i].length; j++)
accumulator[i][j] = sequence[i][j];
作为旁注,避免将变量命名为 array1
、array2
等。这使得识别特定变量的用途变得非常困难。一个变量应该通过阅读说出它的作用或目的。
我知道这个问题之前有人问过 Java,但我目前正在尝试处理,none 的解决方案对我有用。我有两个数组:
int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = {{7,8,9},{10,11,12}};
arrayCopy(array1,array2);
array2[0][1] = 100;
println(array1[0][1]);
//prints 100 despite never altering it
我尝试过的事情:
//For Loop
for(int i = 0; i < array1.length; i++){
array2[i] = array1[i];
}
//Cloning
array2 = array1.clone();
如果您参考 arrayCopy
函数的文档,它说
If
arrayCopy
is used with a two (or three or more) dimensional array, it will only copy the references at the first level, because a two dimensional array is simply an "array of arrays".
所以基本上修改 array2
中的任何数组也会修改 array1
中的相应数组。但是,如果您使用一维数组,情况就不会如此。
如果您希望将 array1
的每个数组复制到 array2
而没有任何上述行为,那么您需要创建一个嵌套的 for
循环来遍历每个数组array1
的元素(锯齿状数组)并将其内容(整数)复制到另一个数组中。
示例:
int[][] sequence = {{1, 2, 3},
{4, 5, 6}};
int[][] accumulator = new int[sequence.length][3];
for (int i = 0; i < sequence.length; i++)
for (int j = 0; j < sequence[i].length; j++)
accumulator[i][j] = sequence[i][j];
作为旁注,避免将变量命名为 array1
、array2
等。这使得识别特定变量的用途变得非常困难。一个变量应该通过阅读说出它的作用或目的。