2013-03-30 126 views
0

我在行陣列空指針異常

得到一個空指針異常

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

,我想不通爲什麼。它可能有一些做初始化,但我真的不知道它可能是

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(); 
} 

它總是更好地使用i < names.length,而不是一個明確的整數。

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

您也可以使用i <= 5,但使用長度字段總是更好。