0
まず、カードのデッキのコピーを作成しました。次に、作成したメソッドを使用して、そのコピーデッキの最初の7枚のカードのみを印刷しようとしました(2回する必要があります)。 nextCardは、私たちがデッキにいる場所を追跡するためのカウンターです。オブジェクトをJavaで印刷する
ここが私のクラスである:パブリッククラスデッキ
{
private Card[] deck;
private int nextCard;
public Deck(){
deck = new Card[53];
nextCard = 0;
for(int i = 0; i < 52; i++){
deck[i] = new Card(i);
nextCard++;
}
}//Deck
public Deck(Deck existingDeck){//copy
this.deck = new Card[52];
for(int i=0; i < 52; i++){
this.deck[i] = new Card(existingDeck.deck[i]);
}
nextCard++;
}
public void shuffle(){
Card crdTemp = new Card();
Random random = new Random();
int num;
nextCard = 0;
for(int i = 0; i < 52; i++){
num = random.nextInt (51);
crdTemp = deck[i];
deck[i] = deck[num];
deck[num] = crdTemp;
nextCard++;
}
}
public Card dealACard(){
Card crd = null;
if(nextCard > -1){
crd = deck[nextCard];
nextCard--;
}
return crd;
}
public String dealAHand(int handSize){
Card crd = null;
String cards = "";
for(int i = 0; i < handSize; i++){
crd = dealACard();
cards += crd.toString();
//cards += dealACard().toString();
}
return cards;
}
public String toString(){
String info = "";
for(int i = 0; i < 52; i++){
deck[i].toString ();
info += deck[i];
nextCard++;
}
return info;
}
}
その後、私のドライバーで:
Deck bDeck = new Deck(aDeck);
bDeck.toString();
String[] sevenCards = new String[bDeck];
for(int i = 0; i < 7; i++){
System.out.println ("Copy deck: ");
sevenCards[i] = bDeck.toString();
}
for(int i = 0; i < 7; i++){
System.out.println (sevenCards[i]);
}
}
「私は、私は、各sevenCards配列要素に全体bDeckを割り当てていますと仮定し、私はドンそれをどうやって行うのか分かりません。私はまた、このような新しい配列を作成しようとせずにそれを行う方法があると仮定しますが、再び、私は多くの異なるアイデアを経てきました。本当に感謝してくれるでしょう、ありがとう。
残念ながら、このプロジェクトの要件の一つは、フィールドがプライベートであることである:ここで
dealACard()
への最終的な変更があるプライベートカード[]デッキ。何か案は?応答していただきありがとうございます。それが助けになるなら、上のクラスを追加することができます。 – TonantzinJup、完全なクラスが役に立ちます。もし7枚のハンドカードを描くことについてだけであり、カードがデッキの上端または下端から引かれているかどうかは関係ありません。デッキのコピーに 'dealACard()'を使うことができます。しかし、私はあなたの状況を正しく理解しているかどうかはわかりません。 – Scyman
私は上記のクラスを追加しようとしています、ありがとう!私はdealACard()を試してみましたが、ArrayIndexOutOfBoundsが得られました。理由を理解できません。 – Tonantzin