2013-12-05 5 views
0

Эта программа должна использовать ArrayList для создания колоды карт. Пользователь вводит, сколько карт нужно нарисовать, и эти карты печатаются, а остальные оставшиеся в колоде карты печатаются. Я получил карточки пользователя для печати, но я не могу понять, как получить оставшиеся карточки в колоде для печати. Любая помощь будет оценена по достоинству.Java ArrayList Deck Class

public class Card 
{ 
    private int type, value; 
    private String[] cardType = {"Clubs", "Spades", "Diamonds", "Hearts"}; 
    private String[] cardValue = {"Ace", "King", "Queen", "Jack", "10", 
            "9", "8", "7", "6", "5", "4", "3", "2"}; 

    public Card(int types, int values) 
    { 
     type = types; 
     value = values; 
    } 

    public String toString() 
    { 
     String finalCard = cardValue[value] + " of " + cardType[type]; 

     return finalCard; 
    } 

} 

import java.util.Random; 
import java.util.ArrayList; 

public class Deck 
{ 
    private ArrayList<Card> cards; 

    public Deck() 
    { 
     cards = new ArrayList<Card>(); 

     for(int a =0; a<=3; a++) 
     { 
      for(int b =0; b<=12;b++) 
      { 
       cards.add(new Card(a,b)); 
      } 
     } 
    } 

    public Card drawRandomCard() 
    { 
     Random generator = new Random(); 
     int index = generator.nextInt(cards.size()); 
     return cards.remove(index); 
    } 

    public String toString() 
    { 
     String result = "Cards remaining in deck: " + cards; 

     return result; 

    }  
} 


import java.util.Scanner; 

public class CardProgram 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     Card C; 
     Deck deck = new Deck(); 

     System.out.println("Enter number of cards to be dealt: "); 
     int numberCards = scan.nextInt(); 

     System.out.println("Cards drawn: "); 
     for(int i=0; i<numberCards; i++) 
     { 
      C = deck.drawRandomCard(); 
      System.out.println(C.toString()); 
     } 

     //C = deck.toString(); 
     //System.out.println(cards.toString()); 
     // System.out.println(C.toString()); 


    } 

} 
+0

Итерации над картами. Вы можете сделать это вручную, реализовать итератор Java на 'Deck' и т. Д. –

+0

что не работает? – njzk2

ответ

2

Я думаю, что это должен делать свою работу

System.out.println(deck.toString()); 
//System.out.println(deck); // Note : this will also work 

Хотя я думаю, что создание нового метода remainingCard и возвращение cards ArrayList имеет смысл, а не приоритету toString с оставшимися картами.

0
for(int i=0; i<deck.cards.size(); i++) 
    { 
     System.out.println(deck.cards.get(i).toString()); 
    } 

Попробуйте это цикл сразу же после того, как у вас есть цикл распечатки карты, которые вы нарисованные

У вас есть колода в основном методом ... колода имеет карты ... Вы почерпните карты из вашей колоды .... тогда вы говорите, что на палубе карты, которая дает вам список карт колоды карт ... тогда вы говорите .get (i), чтобы получить каждую карту в этой колоде ... и наконец .toString (), чтобы распечатать содержимое карты

Примечание: вам нужно было бы сделать приватный список массивов карт в классе вашей колоды общедоступным или добавить общедоступный метод получения в классе колоды, чтобы получить арифметику карт ...

Смежные вопросы