noobie阵列问题

时间:2011-05-03 16:22:36

标签: java arrays dynamic

我有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];

[...]

但是我得到了一个N​​ullPointerException。怎么了?我不能在其他类中更改数组的长度吗?

6 个答案:

答案 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();