【发布时间】:2017-10-31 19:22:27
【问题描述】:
这是我的二分搜索程序。我正在寻找Item=a[4]=5。如何从 while 循环中存在的 if 语句返回值,而不在循环外声明 return 语句。
package Array;
class myArray
{
int a[]= {1,2,3,4,5,6,7,8,9,10};
//this block is only for printing the array
{
for(int i=0; i<=9;i++)
{
System.out.println(a[i]);
}
}
public int LocationFinder()
{
int Start=a[0],End=a[9],Item=a[4],loc=0;
while(Start<=End)
{
int mid=(Start+End)/2;
if(Item==mid)
{
Item=loc;
return loc; // <-- I want to return from here
}
else if(Item>mid)
{
Start=mid+1;
}
else
End=mid-1;
}
}
我想从上述位置返回,但发生错误。我怎样才能摆脱这个错误?
【问题讨论】:
-
您遇到什么错误?包括日志或堆栈跟踪。
-
首先你缺少
return's,这甚至不会编译。 -
如果
Start > End会发生什么?while循环结束,方法返回..... what?!? -
这是二分查找程序我如何从 if 语句中返回值???
-
标题说“显示错误”,但您实际上并没有向我们展示您得到的错误,类似于“此方法必须返回 int 类型的结果",因为循环后没有
return语句,循环可以结束,那么返回值是多少呢?
标签: java