我正在尝试在Processing中对当前数组中的行进行洗牌。该数组包含24行,是一个二维数组。有人能告诉我我做错了吗?
float[][] shuffleArray(float[][] myArray) {
float[][] newArray = myArray;
int random1 = round(random(0, 24));
int random2 = round(random(0, 24));
float[] buffer1 = newArray[random1];
float[] buffer2 = newArray[random2];
newArray[random2] = buffer1;
newArray[random1] = buffer2;
return newArray;
}
答案 0 :(得分:1)
要解决您的问题,您首先必须debug your program确切了解您的计划的作用。
最好的办法是逐行浏览您的代码,以了解发生了什么。
float[][] shuffleArray(float[][] myArray) {
float[][] newArray = myArray;
int random1 = round(random(0, 24));
int random2 = round(random(0, 24));
float[] buffer1 = newArray[random1];
float[] buffer2 = newArray[random2];
newArray[random2] = buffer1;
newArray[random1] = buffer2;
return newArray;
}
首先,您将newArray
变量指向myArray
变量。请注意,这意味着两个变量都指向同一个数组,因此更改为一个将影响另一个。
然后你创建两个随机数,但请注意这些随机数可能是相同的。
然后你得到那些索引的子数组,这也可能是相同的。然后你交换子数组。
然后返回newArray
,但请记住这指向myArray
所在的同一个数组。因此,您只需修改输入数组,然后返回对它的引用。
所以,这个函数的作用是可能在2D数组中交换两个子数组。这与改组整个阵列不同。拍摄一副纸牌,可能还要换两张牌。这与改组整个套牌不一样。
现在,要解决您的问题,Google就是您的朋友。正在搜索" java shuffle数组"将返回大量结果,包括this和this。如果您将来遇到问题,请尝试完成调试程序的过程,以便在提出问题之前准确了解代码的作用。祝你好运。