这个while(true)怎么退出循环的?(二分查找法里的)

t427795737 2007-11-11 01:37:23
请问各位高手这个程序里find里的while(true)是怎么退出循环的,while(true)可是无限循环啊,而且循环体里面没有break语句,应该是抛出EOFException才对啊,请各位大侠知道我一下
public class BinarySearchTest
{
private long[] a;
private int nElems;

public BinarySearchTest(int max)
{
a = new long[max];
nElems = 0;
}

public int size()
{
return nElems;
}

public int find(long searchKey)
{
int lowerBound = 0;
int upperBound = nElems - 1;
int curIn;
while(true)
{
curIn = (lowerBound + upperBound) / 1;
if (a[curIn] == searchKey)
return curIn;
else if (lowerBound > upperBound)
return nElems;
else
{
if (a[curIn] < searchKey)
lowerBound = curIn + 1;
else
upperBound = curIn - 1;
}
}
}
}
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2007-11-13
  • 打赏
  • 举报
回复
return 也能退出,小问题,新手都会遇到.
hitzfc 2007-11-13
  • 打赏
  • 举报
回复
当程序运行到return的时候就会自动的跳出函数体的返回相应的数据.楼主有必要
仔细看一下书了
rypgood 2007-11-11
  • 打赏
  • 举报
回复
楼上说的没错 楼主你很危险
Graywolf8888 2007-11-11
  • 打赏
  • 举报
回复
if (a[curIn] == searchKey)
return curIn;
else if (lowerBound > upperBound)
return nElems;
====================================================================

return语句是从方法里返回,这样的话while自然也就退出了。。。
LZ基础一定要打好。。。。。。。。。。。。。。。。。。。。。。
你这样,很危险

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧