public class Test_search 
{
public static void main(String[] args) 
{
int[] a={1,3,6,8,9,10,12,18,20,34};
int i = 12;
System.out.println(binarySearch(a,i));
}

  public static int search(int[] a, int num)
  {
  for(int i=0;i<a.length;i++)
  {
  if(a[i]==num)
  {
  return i;
  }
  return -1;
  }
public static int binarySearch(int[] a,int num)
  {
  if(a.length==0) 
  {
  return -1;
  }
  
  int startPos = 0;
  int endPos = a.length-1;
  int m = (startPos + endPos)/2;
  while(startPos<=endPos)
  {
  if(num == a[m]) return m;
  if(num > a[m])
  {
  startPos = m+1;
  }
  if(num < a[m])
  {
  endPos = m-1;
  }
  m=(startPos + endPos)/2;
  }
  }
  } 
}
显示的错误是这样的:Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method binarySearch(int[], int) is undefined for the type Test_search at Test_search.main(Test_search.java:8)
这个错误是不是说我定义方法错了?但是我不知道怎么改啊。

解决方案 »

  1.   

    lz要记得 每帖必结,提高结帖率
    public class Test_search
    {
        public static void main(String[] args)
        {
            int[] a={1,3,6,8,9,10,12,18,20,34};
            int i = 12;
            System.out.println(binarySearch(a,i));
        }    public static int search(int[] a, int num)
        {
            for(int i=0;i<a.length;i++)
            {
                if(a[i]==num)
                {
                    return i;
                }        }
                   return -1;
        }
        public static int binarySearch(int[] a,int num)
        {
            if(a.length==0)
            {
                return -1;
            }        int startPos = 0;
            int endPos = a.length-1;
            int m = (startPos + endPos)/2;
            while(startPos<=endPos)
            {
                if(num == a[m])
                    return m;
                if(num > a[m])
                {
                    startPos = m+1;
                }
                if(num < a[m])
                {
                    endPos = m-1;
                }
                m=(startPos + endPos)/2;
            }
            return -1;
        }
    }
      

  2.   


    public class Test_search {
        public static void main(String[] args) {
    int[] a = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
    for(int i=0; i<13; i++)
    System.out.println(search(a,i) + "      "  + binarySearch(a, i));
        }    public static int search(int[] a, int num) {
    for (int i = 0; i < a.length; i++) {
        if (a[i] == num) {
    return i;
        }
        //return -1;把这一行代码移至方法最后return -1;
    } return -1;// 没有返回
        }    public static int binarySearch(int[] a, int num) {
    if (a.length == 0) {
        return -1;
    } int startPos = 0;
    int endPos = a.length - 1;
    int m = (startPos + endPos) / 2;
    while (startPos <= endPos) {
        if (num == a[m])
    return m;
        if (num > a[m]) {
    startPos = m + 1;
        }
        if (num < a[m]) {
    endPos = m - 1;
        }
        m = (startPos + endPos) / 2;
    }
    return -1;//没有返回
        }
    }
    /*
    -1      -1
    0      0
    -1      -1
    1      1
    -1      -1
    -1      -1
    2      2
    -1      -1
    3      3
    4      4
    5      5
    -1      -1
    6      6
     */
      

  3.   

    package exercise;public class  BinarySearch
    {
    public static void main(String[] args)  
    {
    int[] a={1,3,6,8,9,10,12,18,20,34};
    int i = 12;
    System.out.println(binarySearch(a,i));
    }  public static int search(int[] a, int num)
      {
    for(int i=0;i<a.length;i++)
    {
    if(a[i]==num)
    {
    return i;
    }
    }
    return -1;
      }
    public static int binarySearch(int[] a,int num)
    {
    if(a.length==0)  
    {
    return -1;
    }
      
    int startPos = 0;
    int endPos = a.length-1;
    int m = (startPos + endPos)/2;
    while(startPos<=endPos)
    {
    if(num == a[m]) return m;
    if(num > a[m])
    {
    startPos = m+1;
    }
    if(num < a[m])
    {
    endPos = m-1;
    }
    m=(startPos + endPos)/2;
    }
    return m;
    }  }  
      

  4.   

    lz,我想知道你的意图先,你是想在方法里在定义一个静态方法吗?
    如果是,那楼上的几位仁兄都改变你的意图了。我想不通。如果不是,那你就应用楼上的就ok了
      

  5.   


    方法内部定义静态方法,学了半年java,从来没见过
      

  6.   


    我以为是JDK7有这玩意,刚才google一下,啥东东都没看到    
    我现在水平只知道可以在方法里定义内部类(或者匿名内部类) 然后内部类中定义方法
      

  7.   

    因为你的binarySearch定义是有问题的,方法没有返回值(某些路径);
    search定义也是有问题的,不是不过语法问题,是逻辑问题;修改方法见1、2楼