如何在数组中混洗行?

时间:2017-10-24 11:31:21

标签: arrays multidimensional-array processing shuffle

我正在尝试在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; 
}

1 个答案:

答案 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数组中交换两个子数组。这与改组整个阵列不同。拍摄一副纸牌,可能还要换两张牌。这与改组整个套牌不一样。

要了解参考资料,建议您阅读this,然后阅读this

现在,要解决您的问题,Google就是您的朋友。正在搜索" java shuffle数组"将返回大量结果,包括thisthis。如果您将来遇到问题,请尝试完成调试程序的过程,以便在提出问题之前准确了解代码的作用。祝你好运。