【发布时间】:2014-05-18 02:13:29
【问题描述】:
我尝试运行此代码以使用二进制搜索来搜索名称,但它不起作用。 这段代码或方法有什么问题?
public static int BinarySearchForStudentsName(String StudentName[],String Name) {
int left = 0;
int right = count - 1;
int middle;
while (true) {
middle = (left + right) / 2;
int copmarison = Name.compareTo(StudentName[middle]);
if (Name.equals(StudentName[middle])) {
return middle;
} else if (left > right) {
return count;
} else {
if (copmarison > 0) {
middle = middle + 1;
} else {
middle = middle - 1;
}
}
}
}
public static void main(String[] args) {
String a[]={"A","B","C","D"};
int index = BinarySearchForStudentsName(a,"M");
if (index == count) {
System.out.println("not found");
} else {
System.out.println("founded at " + index);
}
}}
【问题讨论】:
-
1.您的数组中没有名为“Me”的值。 2. 搜索前需要对数组进行排序。
-
很抱歉,我写的时候忘了排序数组,但同样的事情仍然无法正常工作....关于“ME”的值,我想尝尝它是否会返回未找到...那为什么要搜索?
-
String StudentName[]不可能是正确的。您的变量copmarison拼写错误。您的变量count未定义。解决这个问题。
标签: java binary-search