Java Eclipse给出了一个关于不返回整数的错误
下面的代码应该对一组卡片中的一张卡片执行递归二进制搜索。Eclipse给出了一个错误,该方法不返回整数Java Eclipse给出了一个关于不返回整数的错误,java,arrays,recursion,binary-search,Java,Arrays,Recursion,Binary Search,下面的代码应该对一组卡片中的一张卡片执行递归二进制搜索。Eclipse给出了一个错误,该方法不返回整数 public static int binaryrSearch(Card[] cards, Card target , int low , int high) { if (high<low) { return -1; } int mid = (low+high)/2; int comp = cards[mid].compareTo(
public static int binaryrSearch(Card[] cards, Card target , int low , int high)
{
if (high<low)
{
return -1;
}
int mid = (low+high)/2;
int comp = cards[mid].compareTo(target);
if(comp==0)
{
return mid;
}else if(comp<0)
{
return binaryrSearch(cards , target , mid+1 , high);
}else if (comp>0)
{
return binaryrSearch(cards , target , low , mid-1);
}
}
公共静态int二进制搜索(卡片[]卡片,卡片目标,int低,int高)
{
如果(高由于您的if-else-if语句涵盖了comp
(comp==0
,comp0
)的所有可能值,您应该在以下情况下更改最后一个else:
else if (comp>0)
除此之外:
else
这样,编译器将认识到您的方法总是返回一个值
...
if (comp==0) {
return mid;
} else if (comp<0) {
return binaryrSearch(cards , target , mid+1 , high);
} else {
return binaryrSearch(cards , target , low , mid-1);
}
...
。。。
如果(comp==0){
中途返回;
}else if(comp尝试在binaryresearch
方法的末尾添加return语句
public static int binaryrSearch(Card[] cards, Card target , int low , int high)
{
....
....
return 0;
}
您必须在方法的末尾添加return语句:
public static int binaryrSearch(Card[] cards, Card target , int low , int high)
{
if (high<low)
{
return -1;
}
int mid = (low+high)/2;
int comp = cards[mid].compareTo(target);
if(comp==0)
{
return mid;
}else if(comp<0)
{
return binaryrSearch(cards , target , mid+1 , high);
}else if (comp>0)
{
return binaryrSearch(cards , target , low , mid-1);
}
return 0;
}
公共静态int二进制搜索(卡片[]卡片,卡片目标,int低,int高)
{
如果(high两种方法,添加一个从未到达的return语句并删除最后一个,如果有效的话。谢谢你们的帮助。你们能发布抛出的异常吗?你们不能只有条件地返回。即使它不能通过这3个条件而不返回,IDE也不知道。这种方法d返回int类型的结果
public static int binaryrSearch(Card[] cards, Card target , int low , int high)
{
if (high<low)
{
return -1;
}
int mid = (low+high)/2;
int comp = cards[mid].compareTo(target);
if(comp==0)
{
return mid;
}else if(comp<0)
{
return binaryrSearch(cards , target , mid+1 , high);
}else if (comp>0)
{
return binaryrSearch(cards , target , low , mid-1);
}
return 0;
}