2015-07-11 2 views
-2

Скажем, у меня есть класс:Ошибка при добавлении к спискам с переменной Integer - Java

package school; 
public class SchClass { 
    private Student[] students; 
    private int numStudents = 0; 
    public SchClass() { 
    } 
    public void addStudent(Student s) { 
     this.students[this.numStudents] = s; 
     this.amountStudents++; 
    } 
} 

и я пытаюсь запустить это в другом классе:

import school.SchClass; 
import school.Student; 
import school.Tutor; 
public class JavaTesting { 
    public static void main(String[] args) { 
     Student s = new Student(); 
     Tutor t = new Tutor(); 
     SchClass shc = new SchClass(); 
     sch.setTutor(t); 
     sch.addStudent(s); 
    } 
} 

Когда я делаю это, он сообщает об этом NullPointerException:

Exception in thread "main" java.lang.NullPointerException 
    at school.SchClass.addStudent(SchClass.java:8) 
    at javatesting.JavaTesting.main(JavaTesting.java:10) 

Что не так? Я уверен, что я закодировал это идеально, но он все еще сообщает об ошибке.

+0

инициализации 'Student [] массив –

+0

работы студентов пытаются в наименее синтаксические примеры кода проверки, если они должны быть полными блоками кода. – luksch

ответ

0

Подробнее о Collection framework. Если вам нужны динамические «массивы», вы можете использовать List<T>

Массивы не являются динамическими.

Кроме того, у вас есть многочисленные ошибки в вашем классе. Что такое, например, this.amountStudents++? Кроме того, я удивлен, что ваш код еще не сбой в sch.setTutor(t);, так как вы не объявили переменную с именем sch. Возможно, вы имели в виду shc?

2

студентов-членов является нулевым

public class SchClass { 
     private Student[] students = new Student[ size ]; 
     private int numStudents = 0; 
     public SchClass() { 
     } 
     public void addStudent(Student s) { 
      this.students[this.numStudents] = s; 
      this.amountStudents++; 
     } 
    } 

и он будет работать только untils amountStudents < размер, то execption будет происходить так лучше

public class SchClass { 
    private List<Student> students = new ArrayList<Student>(); 
    public SchClass() { 
    } 
    public void addStudent(Student s) { 
     this.students.add(s); 
    } 
} 
Смежные вопросы