Java 尝试打印桥牌游戏时出现空错误
当我运行main时,这一行出现了一个java null错误Java 尝试打印桥牌游戏时出现空错误,java,Java,当我运行main时,这一行出现了一个java null错误 int rank = cards[i].getRank(); int points = cards[i].getPoints(); 我只是想得到手牌数组中牌的countHighCardPoints()点值,并将这些点值相加。 如果我在char suit=cards[I].getSuit()上没有得到空值,我还将假设我的countDistributionPoints()将起作用 因此,我的手需要帮助 public class Hand
int rank = cards[i].getRank();
int points = cards[i].getPoints();
我只是想得到手牌数组中牌的countHighCardPoints()点值,并将这些点值相加。
如果我在char suit=cards[I].getSuit()上没有得到空值,我还将假设我的countDistributionPoints()将起作用代码>
因此,我的手需要帮助
public class Hand
{
//Holds an array of card objects
private Card [] cards = new Card [13];
/**
* Constructor takes array of Cards and assigns that parameter to
* the instance variable
*/
public Hand(Card [] cards)
{
Card [] hand = cards;
}
/**
* Looks through each card in hand array and adds its points
* if the card has any to a sum highPoints
*/
public int countHighCardPoints()
{
int highPoints = 0;
for (int i = 0; i < cards.length; i++) {
int rank = cards[i].getRank();
int points = cards[i].getPoints();
highPoints += points;
}
return highPoints;
}
public int countDistributionPoints()
{
int countPoints = 0;
for (int i = 0; i < cards.length; i++) {
//char suit = cards[i].getSuit();
if (cards[i].getSuit() >= 3)
countPoints = 0;
else if (cards[i].getSuit() == 2)
countPoints++;
else if (cards[i].getSuit() == 1)
countPoints += 2;
else if (cards[i].getSuit() == 0)
countPoints += 3;
}
return countPoints;
}
public-class-Hand
{
//保存一组卡片对象
私人卡[]卡=新卡[13];
/**
*构造函数获取卡片数组并将该参数分配给
*实例变量
*/
公共手牌(卡[]张)
{
卡片[]手=卡片;
}
/**
*查看手牌阵列中的每张牌并添加其点数
*如果卡上有任何到一个总和的高点
*/
公共int countHighCardPoints()
{
int高点=0;
对于(int i=0;i=3)
计数点=0;
else if(cards[i].getSuit()==2)
countPoints++;
else if(cards[i].getSuit()==1)
计数点+=2;
else if(cards[i].getSuit()==0)
计数点+=3;
}
返回点;
}
甲板等级供参考
public class Deck
{
//Holds an array of card objects
private Card [] cards = new Card [52];
//Holds number of cards remaining in deck
private int count;
/**
* Creates a Card [] arrayOfCards which is 13 cards for each player
* and will determine number of cards that was dealt with count.
*/
public Card [] dealThirteenCards()
{
Card [] arrayOfCards = new Card [13];
for (int i = 0; i <= 12 && count < 52; i++) {
arrayOfCards[i] = cards[i];
count++;
}
return arrayOfCards;
}
公共类甲板
{
//保存一组卡片对象
私人卡[]卡=新卡[52];
//持有牌组中剩余的牌数
私人整数计数;
/**
*创建一张卡片[]arrayOfCards,每个玩家有13张卡片
*并将确定已处理的卡数计数。
*/
公共卡[]交易第三方信用卡()
{
卡片[]arrayOfCards=新卡片[13];
对于(int i=0;i问题出现在下面的代码中。不是初始化实例变量,而是初始化局部变量
Card[]手=卡片;
将此更改为:
this.cards=cards
问题在下面的代码中。不是初始化实例变量,而是初始化局部变量
private Card[] cards = new Card [13];
Card[]手=卡片;
将此更改为:
this.cards=cards
private Card[] cards = new Card [13];
这将创建一个包含13个元素的数组。除非循环遍历每个索引并使用新卡初始化它,否则所有元素都为空
public Hand(Card [] cards) {
Card[] hand = cards;
}
此构造函数使用作为参数传递的卡片初始化局部变量hand
。因此卡片
字段永远不会被此构造函数重新初始化
这将创建一个包含13个元素的数组。除非循环遍历每个索引并使用新卡初始化它,否则所有元素都为空
public Hand(Card [] cards) {
Card[] hand = cards;
}
此构造函数使用作为参数传递的卡片初始化一个局部变量手
。因此卡片
字段永远不会被此构造函数重新初始化。仍在使用您的代码,但目前我在这里发现了一些东西:
1.在手牌的构造中,您从不将传入的值分配给其实例变量卡,这就是为什么每只手牌下的牌组将是一个空数组的原因。您应该将其更改为:
public Hand(Card [] cards) {
this.cards = cards;
}
2.dealThirteenCards
甲板下行为异常
for (int i = 0; i <= 13 && count < 52; i++) {
arrayOfCards[i] = cards[i];
count++;
}
for(int i=0;i仍在使用您的代码,但目前我在这里发现了一些东西:
1.在手牌的构造中,您从不将传入的值分配给其实例变量卡,这就是为什么每只手牌下的牌组将是一个空数组的原因。您应该将其更改为:
public Hand(Card [] cards) {
this.cards = cards;
}
2.dealThirteenCards
甲板下行为异常
for (int i = 0; i <= 13 && count < 52; i++) {
arrayOfCards[i] = cards[i];
count++;
}
for(int i=0;iprivate Card[]cards=new Card[14];
-桥牌手什么时候有十四张牌了?我一定是打错了,会尽快改变。所以当你说cards[i]时,你不会得到NullPointerException
,但是当你说cards[i]时,你会得到NullPointerException
.getPoints()
?不确定这是否可行,除非问题出现在getPoints
方法本身的代码中。能否显示异常的堆栈跟踪?@ChetanKinger嗯,我确实得到卡[I].getRank()和卡[I].getPoints()的空错误
在我运行main时,其中一个问题刚刚被注释掉。您不认为这是您应该在问题中发布的相关信息吗?也可以是“卡片”[]这一个人到底在干什么?我感觉你没有向我们展示你实际运行的代码。当你这么做时,我们帮不了你。private Card[]cards=新卡[14]桥牌手从什么时候开始有十四张牌了?我肯定是打字错误,会尽快改变。所以当你说cards[i].getRank()时,你不会得到NullPointerException
,但是当你说cards[i].getPoints()时,你会得到NullPointerException
?除非问题出现在getPoints
方法本身的代码中,否则不确定这是否可行。您能显示异常的堆栈跟踪吗?@ChetanKinger我确实得到cards[I].getRank()和cards[I].getPoints()的空错误
在我运行main时,其中一个问题刚刚被注释掉。您不认为这是您应该在问题中发布的相关信息吗?也可以是“卡片”[]hand=cards.这个孤独的人到底在做什么?我感觉你没有向我们展示你实际运行的代码。当你这样做时,我们帮不了你。我相信构造函数希望数组作为硬依赖项传递,所以客户端代码有责任确保它们传递一个填充的数组。我的观点是