我有2个数据类
第一
public class Question {
public CharSequence question;
public Answer answers[];
}
第二
public class Answer {
public CharSequence text;
public int number;
}
现在我想保存问题的答案:
Question qstn.answers = new Answer[2];
[...]
但是我得到了一个NullPointerException。怎么了?我不能在其他类中更改数组的长度吗?
答案 0 :(得分:4)
无法更改数组的长度 在另一个班级?
这不是问题。
问题是您尚未初始化qstn
。
你应该做的是:
Question qstn = new Question();
qstn.answers = new Answer[2];
答案 1 :(得分:0)
您是否先创建了一个新的问题实例,例如
Question qstn = new Question();
qstn.answers = new Answer[2];
除非您明智地进行优化,否则您可能希望将封装设置为go并将实例变量设为私有。通过公共API访问,例如吸气剂或/和制定者。
此外,您可能希望在创建对象时实例化答案,例如
public class Question {
public CharSequence question;
public Answer answers[] = new Answer[2];
}
或者您可以在Question的构造函数中执行此操作(您需要添加一个构造函数,因为编译器将默认情况下生成一个非arg构造函数)。
答案 2 :(得分:0)
您需要首先实例化您的问题类:
Question qstn = new Question();
答案 3 :(得分:0)
试试这个:
Question qstn = new Question();
qstn.answers = new Answer[2];
答案 4 :(得分:0)
您尝试错误地访问阵列。
Question qstn = new Question();
qstn.answers = new Answer[2];
答案 5 :(得分:0)
是。您可以在另一个类中更改数组的长度。
请检查您是否已初始化变量qstn
。
Question qstn = new Question();