2013-03-30 5 views
0

내가 배열 널 포인터 예외

if(names[j].compareTo(names[j+1]) > 0)

라인

에서 널 포인터 예외를 받고 있어요 나는 이유를 알아낼 수 없습니다. 그것은 초기화 함께 할 수있는 뭔가가있을 수 있습니다하지만 난 정말 그것이 명시 적으로 정수가 아닌 i < names.length를 사용하는 것이 좋습니다

public static void item3(Profitable[] movies, Scanner input) { 
    int j; 
    boolean flag = true; 
    String temp; 
    String search; 
    int low = 0; 
    int high; 
    int mid; 

    String[] names = new String[6]; 

    for(int i = 0; i < 5; i++) { 
     names[i] = ((Movie)movies[i]).getTitle(); 
    } 

    high = names.length - 1; 
    mid = (low + high)/2; 

    while(flag) 
    { 
     flag = false; 
     for(j = 0; j < names.length - 1; j++) 
     { 

      if(names[j].compareTo(names[j+1]) > 0) { 
       temp = names[j]; 
       names[j] = names[j+1]; 
       names[j+1] = temp; 
       flag = true; 
      } 
     } 
    } 

    System.out.print("Enter your search term: "); 
    search = input.nextLine(); 

} 

답변

4

이 루프 :

for(int i = 0; i < 5; i++) { 
    names[i] = ((Movie)movies[i]).getTitle(); 
} 

는 첫 번째 다섯 개 가지 요소를 초기화하지만, 마지막 하나는 초기화되지 않습니다.

0
for(int i = 0; i < 5; i++) { // only 5 iterations while names contain 6 elements 
    names[i] = ((Movie)movies[i]).getTitle(); 
} 

수 모르겠어요.

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

i <= 5을 사용할 수도 있지만 길이 필드를 사용하는 것이 좋습니다.