Печать массивов с объектами в Java
Сначала я сделал копию колоды карт. Затем я попытался использовать метод, который я создал, чтобы напечатать только первые семь карт этой колоды копий (что мне нужно сделать 2 раза). nextCard - это счетчик для отслеживания того, где мы находимся в колоде.
Вот мой класс: Палуба публичного класса
{
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]);
}
}
Я предполагаю, что назначаю весь bDeck каждому элементу массива sevenCards, но я не знаю, как сделать это по-другому. Я также предполагаю, что есть способ сделать это, не пытаясь создать новый массив, подобный этому, но опять же, я реализовал много разных идей, и ничего не получилось. Был бы очень признателен за направление, спасибо.
1 ответ
Если я вас правильно понимаю, вы хотите напечатать только первые семь карт своей колоды? Таким образом, вы должны получить доступ к колодам карт, чтобы сделать это:
Deck bDeck = new Deck(aDeck);
bDeck.toString();
String[] sevenCards = new String[7];
for(int i = 0; i < 7; i++){
System.out.println ("Copy deck: ");
sevenCards[i] = bDeck.deck[i];
}
for(int i = 0; i < 7; i++){
System.out.println (sevenCards[i]);
}
}
Это будет работать, если Deck.deck
доступен в вашем цикле for, и вы правильно реализовали toString()
метод вашего Card
учебный класс.
РЕДАКТИРОВАТЬ: Вот последние изменения dealACard()
:
public Card dealACard(){
Card crd = null;
if(nextCard > 0) {
nextCard--;
crd = deck[nextCard];
}
return crd;
}