Eclipse 给出关于不返回整数的错误
Eclipse giving an error about not returning an integer
下面的代码应该对卡片数组中的卡片进行递归二进制搜索。 Eclipse 给出一个错误,该方法没有 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);
}
}
比较方法:
public int compareTo(Card that){
if(this.suit<that.suit)
{
return -1;
}
if(this.suit>that.suit)
{
return 1;
}
if(this.rank<that.rank)
{
return -1;
}
if(this.rank>that.rank)
{
return 1;
}
return 0;
}
由于您的 if-else-if 语句涵盖了 comp
(comp==0
、comp<0
和 comp>0
)的所有可能值,您应该更改最后一个 else if :
else if (comp>0)
其他:
else
这样编译器会意识到你的方法总是returns一个值。
...
if (comp==0) {
return mid;
} else if (comp<0) {
return binaryrSearch(cards , target , mid+1 , high);
} else {
return binaryrSearch(cards , target , low , mid-1);
}
...
尝试在 binaryrSearch
方法末尾添加 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;
}
两种方法,添加从未达到的 return 语句并删除最后一个(如果有效)。谢谢你们的即时帮助。
下面的代码应该对卡片数组中的卡片进行递归二进制搜索。 Eclipse 给出一个错误,该方法没有 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);
}
}
比较方法:
public int compareTo(Card that){
if(this.suit<that.suit)
{
return -1;
}
if(this.suit>that.suit)
{
return 1;
}
if(this.rank<that.rank)
{
return -1;
}
if(this.rank>that.rank)
{
return 1;
}
return 0;
}
由于您的 if-else-if 语句涵盖了 comp
(comp==0
、comp<0
和 comp>0
)的所有可能值,您应该更改最后一个 else if :
else if (comp>0)
其他:
else
这样编译器会意识到你的方法总是returns一个值。
...
if (comp==0) {
return mid;
} else if (comp<0) {
return binaryrSearch(cards , target , mid+1 , high);
} else {
return binaryrSearch(cards , target , low , mid-1);
}
...
尝试在 binaryrSearch
方法末尾添加 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;
}
两种方法,添加从未达到的 return 语句并删除最后一个(如果有效)。谢谢你们的即时帮助。