2012-03-10 4 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; 
    } 
} 

맨 위에 배열을 만든 다음 셔플 메서드에서 아래의 원형 배열로 덮어 쓰려고합니다.

다른 도움이 필요하지 않습니다. 직접 해보고 싶습니다.이 문제에 대한 도움을 요청할뿐입니다.

감사합니다.

+0

현재 직면하고있는 문제는 무엇입니까? –

답변

2

이미 언급했듯이 Java 컬렉션의 목록을 사용하면됩니다.

신속하고 더러운 예 :이 도움이

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 beeing 빠른 :) – SimonSez