2012-05-04 3 views
1

У меня есть два класса java. Расписание - это основной класс, который использует массив заданий deadline. У меня проблемы с помещением в массив. У меня есть цикл for, который считывает данные из текстового файла (он отлично работает) и вставляет определенные данные в deadline. Я не успешно создаю deadline, потому что всякий раз, когда я хочу начать вставку в массив, я получаю NullPointerException. (Код ниже ... явно не то, что я на самом деле закодировал, но это все та же ситуация.)NullPointer в массиве класса

Прошло некоторое время с тех пор, как я закодирован на Java, поэтому я мог бы просто пропустить что-то простое, но я не совсем уверен, что это может быть ... Спасибо за любую помощь, которую вы можете дать.

public class Schedule { 

    private Job []deadline; 
    Schedule (int n){ 
     Job[] deadline = new Job[n]; 
    } 

    ... 
     int n = 7; 
     Schedule schedule = new Schedule(n); 

     deadline[0] = new Job("A",3,40); // This line won't compile. NullPointerException 
} 


public class Job { 

    private String name; 
    private int deadline; 
    private int profit; 

    Job(String n, int d, int p){ 
     name = n; 
     deadline = d; 
     profit = p; 
    } 

} 

ответ

9

Вы затенение deadline в конструкторе, так что вы не инициализировать класс члена deadline, но местные один. Измените его на:

private Job []deadline; 
    Schedule (int n){ 
     deadline = new Job[n]; 
    // ^^ note - no Job[] here 
    } 
+1

Иными словами, крайний срок объявляется классом, поэтому вам не нужно повторно объявлять его внутри конструктора. Поступая таким образом, вы создаете новую переменную (с тем же именем), которая существует только внутри вашего конструктора. – jahroy

+0

* facepalm * Я подумал, что это было что-то глупое. Спасибо чувак. Он работает сейчас! –

+0

случилось со всеми нами :) рад, что я мог бы помочь. – MByD

Смежные вопросы