返回卡片阵列的大小

时间:2011-04-17 18:40:42

标签: java

写一个代表一副牌的甲板课程。它从52张牌开始,但是当牌从牌组发出时,牌的数量变小。此类有一个私有实例变量,用于存储当前位于Deck中的Cards。它是private Card[] cards;

我需要编写一个返回卡数组大小的方法。 (它开始等于52,但随着牌从牌组发出而变小。)

会是这样的吗?

public int getNumCards() 
{
    int getNumCards = 52;

    for(int i = getNumCards; i > 0; --i)
        getNumCards = i;

    return getNumCards;


}

4 个答案:

答案 0 :(得分:1)

数组的大小始终为52。

你的代码除了在循环中迭代52次之外别无其他。

假设您将已移除的卡片设置为null,您可以使用以下代码:

public  int getNumCards() 
    {

        int counter = 0;
        for(int i = 0; i < cards.length; i++) {
            if (cards[i] != null) {
                counter++;
            }
        }
        return counter;
    }

但更好的解决方案是使用卡片列表:

private ArrayList<Card> cards = new ArrayList<Card>();

然后您可以轻松计算卡数:

public int getNumCards() 
    {
        return cards.size();
    }

答案 1 :(得分:1)

您可以使用一行代码执行此操作。

public int get numCards() {
    for (int count = 0; cards[count] != null; count++);
    return count;
}

答案 2 :(得分:0)

不,你的代码没有任何意义。它总会返回相同的答案。

当您意识到您的代码甚至没有查看数组时,这并不奇怪。

尝试使用谷歌。

答案 3 :(得分:0)

如果你确实需要使用数组(不是列表或集合或其他任何东西),那么首先你需要决定从牌组中删除牌的方法。在您决定之后,您可以继续“在牌组中剩余的牌”计算。

鉴于阵列,您可以从中删除卡片:

  1. null分配给其中一个数组元素。要查找大小,您需要遍历数组并计算所有不是null的元素。
  2. 创建较小且不包含已删除卡的新阵列。然后将新数组分配给旧数组的变量。在这种情况下,长度将很简单cards.length
  3. 添加一些属性以保持每张卡的“已处理”状态。例如card.isDealt=true。在这种情况下,您遍历数组并计算所有具有等于false的标志的卡。