请问各位高手这个程序里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;
      }
    }
  }
}

解决方案 »

  1.   

    if   (a[curIn]   ==   searchKey) 
                    return   curIn; 
                else   if   (lowerBound   >   upperBound) 
                    return   nElems; 
    ====================================================================return语句是从方法里返回,这样的话while自然也就退出了
    LZ基础一定要打好。
    你这样,很危险
      

  2.   

    当程序运行到return的时候就会自动的跳出函数体的返回相应的数据.楼主有必要
    仔细看一下书了
      

  3.   

    return 也能退出,小问题,新手都会遇到.