除了在我洗牌后试图显示牌组以外,一切都在这里工作。我不确定为什么,但阵列列表似乎在洗牌后是空的。如果我将混排代码注释掉,甲板显然会显示,但不会显示。由于这是一项任务,我需要我的程序保持相同的通用格式,而混洗算法需要尽可能保持相同。使用不显示列表列表的牌洗牌的输出
public class Shuffler
{
public static void selectionShuffle(ArrayList<Card> values) {
ArrayList<Card> shuffled = new ArrayList<Card>();
ArrayList<Card> copy = new ArrayList<Card>();
for (int k = 51; k >= 0;) {
int r = (int)(Math.random() * (double)52);
if (r < values.size()) {
shuffled.add(values.get(r));
values.remove(r);
k--;
}
}
for (int i = 0; i < values.size(); i++) {
values.set(i, shuffled.get(i));
}
}
这里是甲板构造函数,它创建一个甲板出三个阵列以形成三个卡对象。
public class Deck
{
public static ArrayList<Card> cards = new ArrayList<Card>();
private int size;
public Deck(String[] ranks, String[] suits, int[] values)
{
for (int i = 0; i < values.length; i++) {
cards.add(new Card(ranks[i], suits[i], values[i]));
}
size = values.length;
shuffle();
}
public void shuffle() {
Shuffler.selectionShuffle(cards);
size = size();
}
}
什么是“复制”变量? – aioobe 2014-12-02 14:47:57
垃圾。昨天晚上我正在测试,并在今天早上突然冒出来之前忘记清除垃圾。 – LordValkyrie 2014-12-02 14:55:48
考虑为随机索引生成器使用Random.nextInt()。 – user1717259 2014-12-02 14:58:07