Я пытаюсь создать итеративную функцию двоичного поиска как часть части работы.Итеративный двоичный поиск - String Array
Я попытался найти похожие проблемы, но они имеют тенденцию относиться к целым массивам, а не к строковым массивам.
Я думаю, что проблема с моим кодом связана с тем, что операторы сравнения строк не выполняются должным образом.
Если я запускаю код с некоторыми основными данными тест я получаю «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' в качестве параметра этому методу. –
Похоже, ваша проблема заключается в том, как инициализируется ваша переменная данных, и вы не предоставляете код для этого. Также возможно, что data [index] может быть нулевым значением, если не все элементы в массиве были инициализированы действительным объектом String. – mba12