Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse给出了一个关于不返回整数的错误_Java_Arrays_Recursion_Binary Search - Fatal编程技术网

Java 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(

下面的代码应该对一组卡片中的一张卡片执行递归二进制搜索。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(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;
}