Ich versuche, eine iterative binäre Suchfunktion als Teil einer Arbeit zu erstellen.Iterative binäre Suche - String Array
Ich habe versucht, nach ähnlichen Problemen zu suchen, aber sie neigen dazu, alle für Integer-Arrays statt String-Arrays zu sein.
Ich denke, das Problem mit meinem Code ist mit den String-Vergleichsoperatoren nicht ordnungsgemäß ausgeführt.
Wenn ich den Code mit einigen grundlegenden Testdaten laufen bekomme ich ein „java.lang.NullPointerException“
Wenn jemand einen Blick auf meinem Code nehmen und zeigen, wo ich falsch geht wäre es sehr geschätzt. Vielen Dank!
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;
}
Edit: Ich habe meine Initialisierung und Testcode enthalten.
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;
}
Im main.java nenne ich die Funktion und fügen Sie Werte in das Array:
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"));
Wo erhalten Sie diese Ausnahme? –
Sie sollten das Array 'data' als Parameter an diese Methode übergeben. –
Sieht für mich so aus, als ob Ihr Problem darin liegt, wie Ihre Datenvariable initialisiert wird und Sie den Code dafür nicht bereitstellen. Es ist auch möglich, dass data [index] ein Nullwert sein kann, wenn nicht alle Elemente im Array mit einem gültigen String-Objekt initialisiert wurden. – mba12