有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何创建卡片组构造函数

到目前为止,这就是我所拥有的

import java.util.Random;
public class DeckOfCards
{
public static final int DECK_SIZE = 52;

//Instance Variables
private boolean[] deck; //An implicit set of 52 Playing-Cards
private int cardsInDeck;//Number of cards currently in the deck
private Random dealer;  //Used to rendomly select a card to be dealt

//Constructor
public DeckOfCards()
{
        deck = new boolean[52];
        for (int j = 0; j<deck.length ; j ++)
            deck [j] = false;

我的方向对吗?。。。这之后我该怎么办?我不太熟悉布尔数组


共 (3) 个答案

  1. # 1 楼答案

    考虑到赋值,应该在deck数组中存储true,而不是false。此外,我会让它成为一个二维布尔数组——一个是套件的维度,一个是排名的维度

    private boolean deck[][] = new boolean[13][4];
    
    public DeckOfCards() {
        for (int rank = 0 ; rank != 13 ; rank++)
            for (int suite = 0 ; suite != 4 ; suite++)
                deck[rank][suite] = true;
    }
    
    boolean containsCard(int rank, int suite) {
        return deck[rank][suite];
    }
    
  2. # 2 楼答案

    根据你的评论,你必须使用一个布尔数组,其中true表示卡片在那里

    第一点:

    那么,当你建造甲板时,它是满的还是空的

    我假设它是满的,那么每个单元格的值应该是多少

    第二点:

    在您使用的构造函数中:

    deck = new boolean[52];
    

    这是完全正确的,但你也有

    public static final int DECK_SIZE = 52;
    

    声明,因此我假设您应该在适用的情况下使用DECK_SIZE

    第三点:

    您有两个字段:

    private int cardsInDeck;//Number of cards currently in the deck
    private Random dealer;  //Used to rendomly select a card to be dealt
    

    在你的构造函数中没有初始化(至少在你发布的部分中没有初始化)

    最后一点:

    构造函数方法除了设置本地字段外,不应该做任何事情。因此,如果您修复了deck初始化,并初始化了其他字段,那么您应该对构造函数有好处。本例中的大部分工作将在绘制卡片的函数中完成

    编辑:

    要抽一张牌,你必须

    1. 创建一个函数drawACard(),它可以打印出或返回所绘制的卡片
    2. 从卡片组中随机选择一张卡片(使用随机生成器^{)(保存索引)
    3. 检查卡是否仍在卡组中(卡组中的true/false在这里应该有帮助)
    4. 一旦你有一张卡仍然在牌组中,你就必须通过在^{中适当地设置位置来更新该卡的位置
    5. 您还必须适当地更新cardsInDeck变量
    6. 现在你有了卡片的索引,你可以从中生成什么样的卡片
    7. 既然你现在知道了牌组中牌的顺序,你就可以通过索引来决定你画了什么牌
    8. 一旦你有了相应的字符串,比如"Ace of Clubs",你可以用它做任何你需要做的事情

    因此,实现的主要部分将是如何将index=5中的内容更改为String{}

  3. # 3 楼答案

    我自己,我会使用一个卡片对象数组作为我的卡片组变量,而不是布尔数组。基本布尔变量只能处于两种状态中的一种,true或false,而一张卡必须同时具有一套(4个状态中的1个)和一个等级(13个状态中的1个)