处理 - 简单的空指针错误

时间:2011-04-28 06:53:42

标签: java processing

我在处理代码中创建了一个自定义对象数组,然后继续初始化它。但是,出于某种原因,我在objectArray[i].siteID = 5;

处遇到了一个空指针异常

我花了最近2个小时试图找到有关如何解决此问题的信息,但语法似乎是正确的!

代码:

class TtalkObject{
  int siteID = 0;
  String URL = "test";
  int commentNum = 5;
  int averageLength = 5;

}

PFont f;
TtalkObject[] objectArray;
int whatObjectPart = 0;
int whatObject = 0;

void setup()
{
    size(300,300);
    f=createFont("Arial",16,true);
    objectArray = new TtalkObject[50];

    for (int i = 0; i < 50; i ++){
        objectArray[i].siteID = 5;
        objectArray[i].URL = "test";
        objectArray[i].commentNum = 10;
        objectArray[i].averageLength = 10; 
    }

}

4 个答案:

答案 0 :(得分:3)

objectArray = new TtalkObject[50]; //you have initilized array of 50 reference

但并不意味着对象的每个50个参考点

你需要为每个人创建对象。

成功

objectArray = new TtalkObject[50]; 
for (int i = 0; i < 50; i ++){
 objectArray[i] = new TtalkObject();// or some other preferred initialization
 objectArray[i].siteID = 5;

答案 1 :(得分:1)

当您使用未分配内存的内容或访问超出范围的某个变量时,通常会出现空指针错误。

答案 2 :(得分:1)

看起来你永远不会创建TtalkObject的实例,只是初始化一个数组来容纳其中的50个对象。

我不熟悉java语法,在c#中它是

for (int i = 0; i < 50; i ++){
 objectArray[i] = new TtalkObject();
 objectArray[i].siteID = 5;
 objectArray[i].URL = "test";
 objectArray[i].commentNum = 10;
 objectArray[i].averageLength = 10;
}

答案 3 :(得分:1)

在第22行放置以下

objectArray[i] = new TtalkObject();