-1

これが私の問題です。チェックのためにメインメソッドで呼び出す String[] 変数を作成しています。変数を呼び出すたびに、新しいデッキが作成されます。メソッドと変数の両方で final を試しました。これは、シャッフル メソッドを持つ Dealer クラスです。助けてくれてありがとう。

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);


    }

 }
4

3 に答える 3

1

Collections.shuffle()Random()によってシードされた新しいものを使用しているSystem.currentTimeMillis()ため、タイマーが変更された場合、シャッフルごとに新しいデッキが提供されます。

Random()毎回同じシードでシャッフルを実行するCollections.shuffle(list, new Random(123))と、同じデッキで開始すると同じ出力が得られるようになります。

于 2013-04-22T21:54:08.287 に答える
0

質問の限られた情報に基づいてここで推測していますが、あなたは間違ったことをしていると思います。おそらく 1 回だけ呼び出しshuffleDeck()、for ループ内でdeal()複数回呼び出す必要があります。

私の仮定が間違っている場合は、もう一度質問を明確にしてください

于 2013-04-22T21:52:52.487 に答える
0

タイプミスがあると思います:

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
}

deckを返している間のDeckインスタンスであるためString[]、それに基づいて、本当に欲しいのはshuffDeck代わりに返すことです。

于 2013-04-22T21:53:40.530 に答える