我在第
行收到空指针异常 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();
}
答案 0 :(得分:4)
这个循环:
for(int i = 0; i < 5; i++) {
names[i] = ((Movie)movies[i]).getTitle();
}
仅初始化前五个元素,但最后一个元素未初始化。
答案 1 :(得分: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++)
答案 2 :(得分:0)
您也可以使用i <= 5
,但使用长度字段总是更好。