Je suis en train de créer une fonction de recherche binaire itérative dans le cadre d'un travail.binaire itératives Recherche - Chaîne Tableau
J'ai essayé de chercher des problèmes similaires, mais ils ont tendance à être tous pour les tableaux entiers plutôt que des tableaux de chaînes.
Je pense que le problème avec mon code est de faire avec les opérateurs de comparaison de chaînes ne pas exécuter correctement.
Si je lance le code avec des données de test de base je reçois un « java.lang.NullPointerException »
Si quelqu'un pouvait jeter un oeil à mon code et le point où je vais mal, il serait grandement apprécié. Merci!
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;
}
Édition: J'ai inclus mon code d'initialisation et de test.
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;
}
Dans le main.java j'appelle la fonction et ajouter des valeurs au tableau:
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"));
Où trouvez-vous cette exception? –
Vous devez passer le tableau 'data' comme paramètre à cette méthode. –
Me semble que votre problème est dans la façon dont votre variable de données est initialisée et vous ne fournissez pas le code pour cela. Il est également possible que data [index] soit une valeur nulle si tous les éléments du tableau n'ont pas été initialisés à un objet String valide. – mba12