2014-09-09 2 views
0

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

public void prettyPrint(){ 
     Course myCourse = new Course(myCourse.n, myCourse.days, myCourse.start, myCourse.end); 


     for (int i=0; i>Courses.size();i++){ 
      System.out.println("---"+ Course.dayString + ' '+ ' '+" ---"); 
      System.out.println(myCourse.start +"-"+ myCourse.end+ ": " + myCourse.n); 
     } 

Это вызывает у меня ошибки, которые говорят: «myCourse.n не может быть инициализирован». Как инициализировать их, если они просто вытаскивают информацию из класса курса?

+1

Что вы ожидаете значения аргументов 'myCourse.n' и другим быть? –

+0

Он извлекает информацию из текстового файла: myCourse.n - это имя класса, myCourse.days - это когда он встречается и т. Д. Этот код был предоставлен в задании. – user2824852

+0

Обратите внимание, как ваша переменная также называется 'myCourse'. Вы пытаетесь получить доступ к полю из переменной, которая еще не была инициализирована. Если это был точный код в задании, вы должны сообщить об этом своему профессору как ошибочный. –

ответ

1

Course myCourse = new Course(myCourse.n, myCourse.days, myCourse.start, myCourse.end); // myCourse - это просто ссылка, когда вы называете new, myCourse не инициализирован.


Может быть, вы должны кода, как это:

Course myCourse = new Course(n, days, start, end); 
0

Вы не можете ссылаться на значения объекта перед созданием его. Тем не менее, вы можете создавать статические переменные класса и ссылки на них без создания каких-либо объектов, как показано на рисунке:

class Course{ 
    static int n = 1; 
    static int days = 180; 
    //..other definitions 
    //.. 
} 

class Main{ 
    public static void main(){ 
     Course myCourse = new Course(Course.n, Course.days); 
    } 
} 

Однако статические переменные ввести зависимость между переменными экземпляра. Лучше дизайн будет в factory design pattern с реализацией образца следующим образом:

class Course{ 
    int n; 
    int days; 
    // other instance definitions 

    public course(int n, int days){ 
     this.n = n; 
      this.days = days; 
    } 
} 

class History extends Course{ 
    public History(){ 
      super(10,200);//the values that you want this course to have 
    } 
} 

class Geography extends Course{ 
    public Geography(){ 
      super(20,100);//the values that you want this course to have 
    } 
} 

class Main{ 
    public static void main(String args[]){ 
      Course history = new History(); 
      Course geography = new Geography(); 
    } 
} 
Смежные вопросы