Java ArrayList 甲板类

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20410615/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 01:45:09  来源:igfitidea点击:

Java ArrayList Deck Class

javaarraylist

提问by user3071909

This program is supposed to use ArrayList to create a deck of cards. The user enters how many cards to draw and those cards are printed, then the rest of the cards that are remaining in the deck are printed. I got the user's cards to print but I cant figure out how to get the remaining cards in the deck to print. Any help would be appreciated.

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

public class Card 
{
    private int type, value;
    private String[] cardType = {"Clubs", "Spades", "Diamonds", "Hearts"};
    private String[] cardValue = {"Ace", "King", "Queen", "Hyman", "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());


    }

}

回答by Anirban Nag 'tintinmj'

I think this should do your work

我认为这应该可以完成您的工作

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

Though I think creating a new method remainingCardand returning the cardsArrayList makes sense rather than Overriding toStringwith remaining cards.

虽然我认为创建一个新方法remainingCard并返回cardsArrayList 是有意义的,而不是toString用剩余的卡片覆盖。

回答by Josh Engelsma

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

Try this for loop right after you have a for loop printing out the cards you have drawn

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

You have a deck in the main method...a deck has cards...you draw some cards out of your deck....then you say deck.cards which gives you the decks array list of cards...then you say .get(i) to get each card in that deck...and finally .toString() to print out the content of the card

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

Note: you would have to make the private array list of cards in your deck class public or add a public getter method in the deck class to get the arraylist of cards...

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