2013-04-22 2 views
-1

그래서 내 문제입니다. 주 목적의 메서드를 호출하기 위해 String [] 변수를 만듭니다. 매번 변수를 호출하여 새 데크를 만듭니다. 필자는 방법과 변수 모두에서 최종 시도를했습니다. 내 셔플 방법이있는 딜러 클래스입니다. 어떤 도움을 주셔서 감사합니다.변수를 호출 할 때마다 최종 배열 변수를 셔플 메서드로 설정하는 방법

package blackjack; 

import java.util.*; 

public class Dealer { 
private Deck deck = new Deck(); 
private String[] deckArr = deck.deckArr; 
private List list = new ArrayList<>(Arrays.asList(deckArr)); 
public String[] shuffDeck = shuffleDeck(deckArr); 
private int count = 0 ; 



public final String[] shuffleDeck(String[] deck) { 
    Collections.shuffle(list); 
    List<String> shufList = list; 
    deck = shufList.toArray(new String[shufList.size()]); 
    return deck; 
    } 

public String deal() { 
    String dealtCard = null; 
    if (count < 52) { 
     dealtCard = shuffDeck[count]; 

    } 
    else { 
     shuffleDeck(deckArr); 
     this.count = 0; 
    } 
    this.count++; 
    return dealtCard; 
} 
} 

그리고 주로 테스트 목적으로 사용됩니다.

package blackjack; 

public class BlackJack { 


public static void main(String[] args) { 
    Deck deck = new Deck(); 
    Dealer dealer = new Dealer(); 
    String str = dealer.deal(); 

    for(int i = 0; i <52; i++) 
     System.out.println(dealer.shuffDeck[i]); 
     System.out.println(); 
     System.out.println(); 
     System.out.println(str); 


    } 

} 
+1

실제 문제에 대해 자세히 알려주십시오. 여기서 질문 할 때 코드가 무엇을하고 있는지, 또는 문제가 무엇인지 알지 못한다고 가정하십시오. 예를 들어 여러분은''변수를 호출 할 때마다 새로운 데크를 생성 할 때마다 ... "'변수를 호출하는 것은 의미가 없습니까? 변수를 호출 할 수는 없지만 *** 메서드 만 호출 할 수 있습니다 ***. 어떤 코드 줄을 언급하고 있습니까? –

+0

문제가 무엇인지 추측하려고합니다 ... –

답변

0

여기 제한된 정보를 기반으로 추측하고 있습니다. 그러나 나는 잘못 생각한 것 같습니다. shuffleDeck()을 한 번만 호출하고 for 루프 호출 deal()을 여러 번 호출하려는 경우 일 수 있습니다.

내 가정이 틀린 경우 다시 으로 보내주십시오. 질문을 명확히하십시오.

0

난 당신이 몇 가지 오타가 있다고 생각 : 당신이 String[]를 반환하고 대신 shuffDeck을 반환하는 것입니다 당신이 정말로 원하는 것 같다에 기반하는 동안 deckDeck 인스턴스

public final String[] shuffleDeck(String[] deck) { 
    Collections.shuffle(list); 
    List<String> shufList = list; 
    deck = shufList.toArray(new String[shufList.size()]); 
     ^------> THIS SHOULD BE shuffDeck 
    return deck; 
      ^------> THIS SHOULD BE shuffDeck 
} 

때문입니다.

1

Collections.shuffle()System.currentTimeMillis()으로 시드되는 새로운 Random()을 사용하므로 타이머가 변경되면 각 셔플은 새 데크를 제공합니다.

Collections.shuffle(list, new Random(123))과 같이 동일한 시드가있는 Random()으로 셔플을 실행하면 동일한 데크로 시작하는 경우 동일한 출력을 얻을 수 있습니다.