此代码应该在一副牌上执行“完美洗牌”。它代表一个甲板分成两个甲板,然后再将它们交错。
当我传入一个数组然后打印出返回数组中的元素时,这些元素显然是混洗的。然而,由于perfectShuffle方法中的数组是我传入其中的任何数组的别名,因此主方法中的原始数组也应该“混洗”。
但是,当我在执行完美的随机播放方法后打印出数组时,元素不会被混洗。当我检查相同的返回数组时,它被洗牌......我不确定它为什么不起作用。有人可以向我解释这一点吗?未在主要方法中显示的阵列更改
public class Shuffler {
private static final int SHUFFLE_COUNT = 1;
private static final int VALUE_COUNT = 9;
public static void main(String[] args) {
System.out.println("Results of " + SHUFFLE_COUNT +
" consecutive perfect shuffles:");
int[] values1 = new int[VALUE_COUNT];
for (int i = 0; i < values1.length; i++) {
values1[i] = i;
}
perfectShuffle(values1);
for (int j = 1; j <= SHUFFLE_COUNT; j++) {
System.out.print(" " + j + ":");
for (int k = 0; k < values1.length; k++) {
System.out.print(" " + values1[k]);
}
System.out.println();
}
System.out.println();
}
public static int[] perfectShuffle(int[] values) {
int[] shuffle = new int[values.length];
int k=0;
for(int j=0; j<(values.length+1)/2; j++)
{
shuffle[k]=values[j];
k+=2;
}
k=1;
for(int j=(values.length+1)/2; j<values.length; j++)
{
shuffle[k]=values[j];
k+=2;
}
values=shuffle;
return values;
}
}
你已经调用了'perfectShuffle'方法,但是返回的数组没有再被赋值为'values1 '。 – TechnoCrat 2015-03-02 15:50:34