Exception in thread “main” java.lang.Error: 无法解析的编译问题:
此方法必须返回 int 类型的结果,用eclipse写了一个方法,提示以上的错误。如下图:
代码如下:
//用二分查找,查找给定元素在数组中的下标(索引)
public static int fun1(int[] arr2 , int b) {
//数组的初始下标
int i = 0;
//数组的末尾下标
int j = arr2.length - 1;
//相当于数组的中间下标
int n = 0;
//num记录查找次数
int num = 0;
//不能在循环中直接返回函数
while(i != j) {
num++;
n = (i + j) / 2;
if(b > arr2[n]) {
i = n + 1;
} else if (b < arr2[n] ) {
j = n - 1;
} else {
return n;
}
}
if (i == j) {
return -1;
}
}
错误是:在循环中直接return n;
解决办法:在方法内,循环为外return n;
实现代码如下:
//用二分查找,查找给定元素在数组中的下标(索引)
public static int fun1(int[] arr2 , int b) {
//数组的初始下标
int i = 0;
//数组的末尾下标
int j = arr2.length - 1;
//相当于数组的中间下标
int n = 0;
int num = 0;
//不能在循环中直接返回函数
while(i != j) {
num++;
n = (i + j) / 2;
if(b > arr2[n]) {
i = n + 1;
} else if (b < arr2[n] ) {
j = n - 1;
} else {
//锁定目标元素,退出循环
break;
}
}
if (i == j) {
//没有找到下标返回-1
return -1;
}else {
//找到元素下标,返回下标。
return n;
}
}
结论:函数有返回值,不能直接在循环中直接return。应在循环外,方法内return。