Как убедиться, что все переменные были инициализированы ошибка в цикле while Локальная переменная, возможно, не была инициализирована - PullRequest
0 голосов
/ 21 августа 2011

У меня есть программа, которая читает строку из строки в формате txt, разбивает строку и помещает ее в массив

while ((inputLine2 = infile2.readLine() )!= null)
{

    //string to split up
    String[] programData = inputLine2.split(":");
    List<CoursesInProgram> programContents = new ArrayList(programContents);
    //constructor

      programContents.add(new CoursesInProgram(programData[2],programData[3],
            programData[4],programData[5],programData[6],programData[7],
            programData[8],programData[9]));
    //other constructor
    programlist.add
    (new Program(programData[0],programData[1], programContents));        

} 

И я получаю ошибку The local variable programContents may not have been initialized. Читая здесь, я узнал, что происходит, когда затмение думает, что возможно, что я никогда не войду в цикл.

поэтому я изменил его на цикл do while и все еще имел ту же проблему.
Затем я попытался инициализировать массив вне цикла, и я получил ошибку двойной копии.

как вы думаете, это решение?

Ответы [ 2 ]

1 голос
/ 21 августа 2011

List<CoursesInProgram> programContents = new ArrayList(programContents): здесь дважды появляется переменная programContents;что вы ожидаете, что произойдет?

0 голосов
/ 21 августа 2011

Сделайте это вместо:

List<CoursesInProgram> programContents = new ArrayList();

while (...) {
    ...
    programContents = new ArrayList(programContents);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...