我如何在Java中建立卡片改组方法以使卡片按特定顺序排列?
|
卡片必须像上半部和下半部一样依次排列,直到通过52张卡片组为止。每个副牌都有26张牌,它们按以下顺序排列:
top1, bottom1, top2, bottom2, top3, bottom3, top4, bottom 4, ..., top n, bottom n
我当时想这样做:Card[] topHalf= new Card[cards.length/2];
public void shuffle() {
int index = 0;
for (int suit = 0; suit <= 1; suit++) {
for (int value = 1; value <= 13; value++) {
cards[index] = new Card(value, suit);
index++;
}
}
Card[] botHalf= new Card[(cards.length+26)/2];
int index2 = 0;
for (int suit = 2; suit <= 3; suit++) {
for (int value = 1; value <= 13; value++) {
cards[index] = new Card(value, suit);
index2++;
}
for (int row = 0; row < cards.length; row++){
row++;
Card [] temp = new Card[( topHalf.length)+botHalf.length];
//cards[row]= cards[index];
}
没有找到相关结果
已邀请:
2 个回复
樊熄忙暖
填盖
如
。 这样做的最有效方法是创建一个新数组,因为就地交换元素并不容易,也不会很快。此模式中的主要观察结果是,每个偶数元素(从索引0开始,因此第一个元素为偶数)都从牌组的开始向上计数,奇数元素从牌组的末尾开始向后计数。 使用此信息,我们可以遍历新数组,根据当前索引是奇数还是偶数,从特定索引中复制原始数组的值。如果我们新数组中的当前索引称为
,则 如果
是偶数,那么我们想要的元素在索引index8ѭ处 如果
是奇数,则元素位于索引
(the11ѭ将四舍五入到最接近的偶数) 这是代码: