当我没有取消引用任何指向Null的东西时,为什么会得到NullPointerException?

你好,世界 :
int playerNum,cardNum;
Cards card=null; 
        
for(playerNum=0;playerNum<=NUMPLAYERS-1;playerNum++)
{ 
    //some code...
            
    for(cardNum=1;cardNum<=5;cardNum++)
    {
     card=( deckOfCards.deal() ); 
     players[playerNum].setHand_1by1(card);//I get NullPointerException for using the method here
                
     //some code...
                    
    }
}

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...
}

我了解到,NullPointerException当您尝试取消引用什么都没有指向的东西时(例如null,您会得到

1),但cardCards类型指向的东西,由于方法deckOfCards.deal()所以这不是问题,必须有一些的方法。

2)在中setHand_1by1()hand[counter]属于卡片类型。我所做的就是使它指向包含Cardselse类型数据的有效内存

为什么我会出现NullPointerException错误?

编辑:只是显示我如何创建我的players

Hand[] players=new Hand[NUMPLAYERS];
阿育:

您需要一个Hand对象引用players[playernum]才能在其上调用Hand方法。

players您创建(类型的数组Hand),实际上只是可以容纳一个数组Hand(或它的子类)的对象引用。最初,引用都是all null,您需要自己填充它们。

关于对象数组注释,请注意,从没有对象数组,只有对象引用数组。引用指向对象实际驻留的位置(通常是堆)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我的输入变量超过 1 个字符时,为什么我没有得到任何结果?

当我增加数组中引用的变量时,为什么我的PointF状况没有得到更新?

为什么运行此功能时我没有得到任何价值(小,中或大)?(我认为我必须使用其他东西代替str())

为什么我没有从我的网络请求中得到任何东西?我应该寻找什么?

当我没有在这个 pygame 脚本中按下任何东西时,为什么精灵图像没有重置为默认值?

为什么当我使用cleaned_data时我没有得到干净的数据

当我从 MongoDB 查询时,为什么会得到这个对象?

当我从外部类调用它时,为什么会得到ClassNotFoundException?

春季启动WebMvcTest,当我提供模拟的UserDetailsService时,为什么会得到此NullPointer?

当我运行查询来计算列的中值时,为什么会得到 SQLCODE -206?

当我“读取”列的文本内容时,为什么会得到StaleElementReferenceException?

当我尝试从远程html页面获取元素时,为什么会得到“ ECONNRESET”

当我使用 sp_executesql 运行查询时,为什么会得到不同的行顺序?

当我在获取输入类型的函数中输入{}时,为什么会得到不确定的定义

当我使用不同的函数时,为什么会得到两个不同的输出?

React - 为什么当我更新重构的状态副本时状态对象会得到更新?

当我尝试使用(来自 keySet())打印每个键时,为什么会得到对象地址?

为什么当我引用未用“ @ + id”标记的ID时,为什么没有出现错误?

为什么我的方法没有返回任何东西?

为什么当我有特定的尺寸时会得到两行

为什么将String与null比较时会得到NullPointerException?

当我从atexit处理程序调用exit时,为什么没有得到无限循环?

当我尝试用Postman测试我的API时为什么没有传递任何参数?

为什么我没有得到NullPointerException?

在(c)和(d)中输入什么(当我没有在此问题中编码时,我仍然会得到输出)

为什么我没有得到任何输出?

为什么我没有得到任何输出

为什么我没有得到任何输出

为什么我有时会得到嵌入的属性有时不会?