【问题标题】:Java ArrayList Deck ClassJava ArrayList 甲板类
【发布时间】:2013-12-05 21:01:55
【问题描述】:

这个程序应该使用 ArrayList 来创建一副纸牌。用户输入要抽多少张牌并打印这些牌,然后打印剩余的牌组中的其余牌。我得到了要打印的用户卡片,但我不知道如何打印卡片组中剩余的卡片。任何帮助将不胜感激。

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


    }

}

【问题讨论】:

  • 遍历卡片。您可以手动执行此操作,在 Deck 上实现 Java 迭代器等。

标签: java arraylist


【解决方案1】:

我认为这应该做你的工作

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

虽然我认为创建一个新方法 remainingCard 并返回 cards ArrayList 比用剩余的卡片覆盖 toString 更有意义。

【讨论】:

    【解决方案2】:
      for(int i=0; i<deck.cards.size(); i++)
        {
            System.out.println(deck.cards.get(i).toString());
        }
    

    在你有一个 for 循环打印出你绘制的卡片后立即尝试这个 for 循环

    您在 main 方法中有一个套牌...一个套牌有卡片...您从您的套牌中抽出一些卡片....然后您说 deck.cards 它为您提供了卡片组的卡片组列表.. .然后你说 .get(i) 来获取该牌组中的每张卡片...最后是 .toString() 打印出卡片的内容

    注意:您必须公开您的牌组类中的私有卡片数组列表,或者在牌组类中添加一个公共 getter 方法来获取牌组列表...

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 2014-06-13
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      相关资源
      最近更新 更多