我在处理代码中创建了一个自定义对象数组,然后继续初始化它。但是,出于某种原因,我在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;
}
}
答案 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();