2015-05-16 4 views
0

Это продолжает бросать NullPointerException после инструкции if, у кого-нибудь из вас есть идея, почему?Удаление элемента в массиве

public void deleteCourse() { 

    Scanner courseInput = new Scanner(System.in); 
    System.out.println("Enter coursename to delete"); 
    String deleteInput = courseInput.nextLine(); 
    System.out.println("check"); 
    int pos = this.findPosition(deleteInput); 
    System.out.println(pos); 
    if (pos != -1) { 

     students[pos].setName(students[students.length - 1].getName()); 
     students[pos].setGrade(students[students.length - 1].getGrade()); 

    } 

} 

public int findPosition(String deleteInput) { 
    int i; 
    for (i = 0; i < students.length; i++) { 

     if (deleteInput.equals(students[i].getName())) { 
      return i; 
     } 

    } 

    return -1; 

} 
+1

Ясно 'или что-то работы студентов в' СТУДЕНТОВ равно нулю. См. Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it – Radiodef

+3

Опубликовать полную трассировку стека при наличии исключения; облегчает нам помощь. – Asura

ответ

1

По крайней мере, один из значений массива students не был установлен вами и null. Когда вы пытаетесь получить доступ к элементу null через getName(), вы получаете NullPointerException.

Чтобы предотвратить это, просто пропустить те элементы, которые null:

public int findPosition(String deleteInput) { 
    if(deleteInput == null) { 
     return -1; 
    } 

    for (int i = 0; i < students.length; i++) { 

     if (students[i] != null && deleteInput.equals(students[i].getName())) { 
      return i; 
     } 

    } 
    return -1; 
} 
+0

вы возвращаете индекс i, когда ученик [i] имеет значение null .. его противоположное вам нужно – Asura

+0

@Asura, конечно, вы правы, обновили мой код :-) – Timo