我是一名初级程序员,正在尝试编写一个简单的二进制搜索程序。我已经把这个程序搞砸了好几天,但没有任何运气让它按应有的方式运行。当我尝试在 java 中编译程序时,我不断收到错误 double cannot be derefrenced 和可能的精度损失。非常感谢您提供的任何帮助。
有问题的程序就在下面。(我已经使用了我所拥有的书中的示例,但即使我无法让它正常工作)有人说我应该告诉确切的错误,它们是 doubleif( a[ mid ].compareTo( x ) < 0 )
不能被取消引用,double 不能被取消引用else if( a[ mid ].compareTo( x ) > 0)
.
编辑:我得到了一些帮助,并将一些双精度数更改为整数
public class Search
{
public static final int NOT_FOUND = -1;
public static double binarySearch(double[] a , double x)
{
int low=0;
int high = a.length -1;
int mid;
while( low <= high )
{
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 NOT_FOUND;
}
public static void main( String[] args)
{
int SIZE = 6;
double[] a = {-3,10,5,24,45.3,10.5};
for (int i= 0; i<SIZE ; i++)
a[i] = new Integer(i *2);
for (int i= 0; i<SIZE*2; i++)
System.out.println("Found" + i + " at " + binarySearch(a, 45.3 ));
}
}