我試圖創建一個迭代二進制搜索功能作爲一部分工作。迭代二進制搜索 - 字符串數組
我試過尋找類似的問題,但他們往往都是整數數組而不是字符串數組。
我認爲我的代碼的問題是與字符串比較運算符不正確執行。
如果我有一些基本的測試數據運行的代碼我得到一個「顯示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