Java折半查找运行错误?

您好,我照着书上写了一个折半查找的程序,用以实现快速查询一个数值在数组中的位置,代码如下(图片代码有点小错误,以下面代码行为准)
图片说明

class Demo
{
    public static <AnyType extends Comparable<? super AnyType>>int binarySearch(AnyType [] a,AnyType x)
    {
        int low=0,high=a.length-1;
        while(low<=high)
        {
            int mid=(low+high)/2;
            if(a[mid].compareTo(x)<0)
                low=mid+1;
            else if(a[mid].compareTo(x)>0)
                high=mid-1;
            else
                return mid;
        }
        return -1;
    }
    public static void main(String[] args)
    {
        Integer[] i= {1,243,23,5523,64,26,32,6457};
        System.out.println(binarySearch(i,23));
    }
}

然而每一次都返回的是-1,应该是返回值出了问题,但是还必须得设置返回值,那请问应该怎么处理呢??

折半查找需要你的那个数组是有序的才可以实现,你首先需要将你那个数组排序再调用你那个方法就可以了。

报什么错都不给吗?