2012-03-10 62 views
1

我正在尝试制作一副扑克牌,阵列中的每个套装都在一副套牌中。当一张卡被拉出时,它将从它所属的套装阵列中移除。当有人调用shuffle方法时,它会“重新创建”这些数组。我需要如何做到这一点的帮助。重新创建阵列

public class Deck { 

    private static String[] hearts = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
    private static String[] diamonds = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
    private static String[] clubs = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
    private static String[] spades = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
    private static int cardsLeft = 52; 


    public static void shuffle() { 

     /* 
     * This method will shuffle the deck. It will simply recreate 
     * the arrays after the cards have been deleted from being dealt. 
     */ 

     hearts = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
     diamonds = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
     clubs = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
     spades = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king", "ace"}; 
     cardsLeft = 52; 
    } 
} 

我在顶部创建数组,然后尝试用shuffle方法中的原始数组覆盖它。

请不要帮助其他任何事情 - 我想自己做这件事,我只是要求这个问题的帮助。

谢谢!

+0

您面临的问题是什么? – 2012-03-10 17:06:46

回答

2

正如已经提到的,只需使用Java集合中的List。

快速和肮脏的例子:

private static ArrayList<String> hearts; 
private static ArrayList<String> diamonds; 
private static ArrayList<String> clubs; 
private static ArrayList<String> spades; 
private static int cardsLeft = 52; 

static { 
    hearts = new ArrayList<String>(); 
    diamonds = new ArrayList<String>(); 
    clubs = new ArrayList<String>(); 
    spades = new ArrayList<String>(); 

    for(int i = 0; i <= 10; i++) { 
     hearts.add(Integer.toString(i)); 
    } 
    hearts.add("jack"); 
    hearts.add("queen"); 
    hearts.add("king"); 
    hearts.add("ace"); 

    diamonds.addAll(hearts); 
    clubs.addAll(hearts); 
    spades.addAll(hearts); 

} 

// will shuffle your list 
public static void main(String[] args) { 

    for(int j = 0; j <=10 ; j++) { 
     Collections.shuffle(hearts); // this will do the magic 

     System.out.println("List shuffled: ");  
     for(String i : hearts) 
      System.out.println(i + " "); 
    } 

} 

希望这有助于,有乐趣!

2

使用此语法:

hearts = new String[]{"1","2","3",...}; 

反正我推荐使用列表,而不是数组,如果你删除元素。

2

如上所述,请使用List接口的实例而不是阵列,并且 使用 Collections.shuffle(List list);方法,而不是编写自己的方法之一。 重新命名为shuffle方法,因为它的名字与它实际上的名称相比是非常不直观的。

+0

+1为更快的:) – SimonSez 2012-03-10 17:29:53