写一个代表一副牌的甲板课程。它从52张牌开始,但是当牌从牌组发出时,牌的数量变小。此类有一个私有实例变量,用于存储当前位于Deck中的Cards。它是private Card[] cards;
我需要编写一个返回卡数组大小的方法。 (它开始等于52,但随着牌从牌组发出而变小。)
会是这样的吗?
public int getNumCards()
{
int getNumCards = 52;
for(int i = getNumCards; i > 0; --i)
getNumCards = i;
return getNumCards;
}
答案 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)
如果你确实需要使用数组(不是列表或集合或其他任何东西),那么首先你需要决定从牌组中删除牌的方法。在您决定之后,您可以继续“在牌组中剩余的牌”计算。
鉴于阵列,您可以从中删除卡片:
null
分配给其中一个数组元素。要查找大小,您需要遍历数组并计算所有不是null
的元素。cards.length
。card.isDealt=true
。在这种情况下,您遍历数组并计算所有具有等于false
的标志的卡。