我试图创建一个迭代二进制搜索功能作为一部分工作。迭代二进制搜索 - 字符串数组
我试过寻找类似的问题,但他们往往都是整数数组而不是字符串数组。
我认为我的代码的问题是与字符串比较运算符不正确执行。
如果我有一些基本的测试数据运行的代码我得到一个“显示java.lang.NullPointerException”
如果有人可以看看我的代码,并指出我要去哪里错了,它会极大地赞赏。谢谢!
public int returnIndex(String searchValue)
{
int min = 0;
int max = data.length -1;
int mid;
while (min <= max) {
mid = min + (max - min)/2;
if (data[mid].compareTo(search) == 0)
{
return mid;
}
else if (data[mid].compareTo(search) > 0)
{
min = mid + 1;
}
else
{
max = mid - 1;
}
}
return -1;
}
编辑:我已经包含了我的初始化和测试代码。
public class SortedVector
{
private int maxlength;
private int numberofitems;
private String[] data;
private int growby;
public SortedVector()
{
maxlength = 10;
numberofitems = 0;
data=new String[maxlength];
growby = 10;
}
在main.java我调用函数,并添加值的数组:
SortedVector Vector = new SortedVector();
Vector.AddItem("Yellow");
Vector.AddItem("Blue");
Vector.AddItem("Green");
System.out.println("The word Yellow is held at index: " + Vector.returnIndex("Yellow"));
你从哪里得到这个例外? –
您应该将数组'data'作为参数传递给此方法。 –
在我看来,你的问题在于你的数据变量是如何初始化的,而你并没有提供代码。如果不是数组中的所有元素都被初始化为一个有效的String对象,data [index]也可能是空值。 – mba12