Java 当我';我不会去引用任何';是指向空的吗?
我知道,当您尝试取消引用指向空的内容时(即Java 当我';我不会去引用任何';是指向空的吗?,java,nullpointerexception,Java,Nullpointerexception,我知道,当您尝试取消引用指向空的内容时(即null),会出现NullPointerException) 1) 但是Cards类型的card由于方法deckOfCards.deal()而指向某个对象,所以这不是问题所在,必须是方法中的某个对象 2) 在setHand_1by1()中,hand[计数器]为卡片类型。我所做的只是在else块中指向包含Cards类型数据的有效内存 为什么会出现NullPointerException错误 编辑: 仅显示我如何创建我的播放器: class Hand {
null
),会出现NullPointerException
)
1) 但是Cards
类型的card
由于方法deckOfCards.deal()
而指向某个对象,所以这不是问题所在,必须是方法中的某个对象
2) 在setHand_1by1()
中,hand[计数器]
为卡片类型。我所做的只是在else
块中指向包含Cards
类型数据的有效内存
为什么会出现NullPointerException
错误
编辑:
仅显示我如何创建我的播放器
:
class Hand
{
private Cards[] hand=new Cards[5];
private int counter;
//no constructor, just a setter.
public void setHand_1by1(Cards card)
{
if(counter>=hand.length)
{
System.out.printf("Hand is full");
}
else
{
hand[counter]=card;
counter++;
}
}
//some code...
}
您需要
玩家[playernum]
中的手牌
对象引用,才能在其上调用手牌
方法
您创建的players
数组(类型为Hand
)实际上只是一个可以容纳Hand
(或其子类)对象引用的数组。最初,所有引用都是null
,您需要自己填充它们
关于对象数组注释,请注意,从来没有对象数组,只有对象引用数组。引用指向对象实际驻留的位置(通常是堆)。关于
players[…]
?您可以访问players
。并且该数组或玩家[playerNum]
访问的元素之一为空。但是您没有显示如何填充该数组,因此无法确定。players
属于Hand
类型。我正在使用setHand_1by1
方法填充它,并在第一次尝试时得到错误,在setHand_1by1
中,您正在填充每个Hand
的Card
数组,但不是包含所有手牌的播放器
数组。显示该代码。您只创建玩家
数组,但从不在其中放置任何手
对象。所以所有元素仍然是null
class Hand
{
private Cards[] hand=new Cards[5];
private int counter;
//no constructor, just a setter.
public void setHand_1by1(Cards card)
{
if(counter>=hand.length)
{
System.out.printf("Hand is full");
}
else
{
hand[counter]=card;
counter++;
}
}
//some code...
}
Hand[] players=new Hand[NUMPLAYERS];