вопрос о массиве нуби - PullRequest
0 голосов
/ 03 мая 2011

у меня есть 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. В чем дело? Разве я не могу изменить длину массива в другом классе?

Ответы [ 6 ]

4 голосов
/ 03 мая 2011

Не могу ли я изменить длину массива в другом классе?

Это не проблема.

Проблема в том, что у вас нетинициализировано qstn пока.

То, что вы должны сделать, это:

Question qstn = new Question();
qstn.answers = new Answer[2];
0 голосов
/ 03 мая 2011

Да.Вы можете изменить длину массивов в другом классе.

Проверьте, инициализирована ли переменная qstn.

Question qstn = new Question();
0 голосов
/ 03 мая 2011

Вы пытаетесь получить доступ к массиву неправильно.

 Question qstn = new Question();
 qstn.answers = new Answer[2];
0 голосов
/ 03 мая 2011

Попробуйте это:

Question qstn = new Question();

qstn.answers = new Answer[2];
0 голосов
/ 03 мая 2011

Вам нужно сначала создать экземпляр класса Question:

Question qstn = new Question();
0 голосов
/ 03 мая 2011

Создали ли вы сначала новый экземпляр Вопроса, например,

Question qstn = new Question();
qstn.answers = new Answer[2];

Кроме того, если вы не будете разумно оптимизировать, тогда вы, вероятно, захотите начать инкапсуляцию и сделать переменные экземпляра приватными.Доступ через общедоступный API, например, методы получения и / или установки.

Также вы можете создавать экземпляры ответов при создании объекта, например,

public class Question {

    public CharSequence question;
    public Answer answers[] = new Answer[2];

}

Или вы можете сделать это в конструкторе Вопроса.(вам нужно добавить конструктор, так как компилятор по умолчанию будет генерировать вас не-аргументный конструктор в том виде, в котором он существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...