Проблема в том, что ваш цикл while
никогда не выполняет более одной итерации.
if (anEntry.equals(currentNode.data)){
break;
}
else {
return -1;
}
Если текущий элемент соответствует, то я нашел элемент, чтобы мы могли остановиться. Если это не так, то список не содержит этот элемент. Должно быть относительно ясно, что эта логика неверна. То, что текущий элемент не совпадает, не означает, что последующие элементы могут не совпадать.
Вы можете продемонстрировать это далее, заметив, что getIndex(50)
на самом деле возвращает правильный индекс: ноль. Ваше утверждение " моя программа всегда возвращает -1 " на самом деле неверно.
Нам нужно поменять местами эту логику - вернуть -1
только после того, как мы уже попробовали все элементы.
while (anEntry != currentNode.data) {
currentNode = currentNode.next;
index++;
if (anEntry.equals(currentNode.data)){
return index;
}
}
return -1;
У вас все еще будет проблема, когда ваш код выдаст исключение, если элемент отсутствует в списке. Это можно легко решить, внеся небольшие изменения в приведенный выше код, но я оставлю это на ваше усмотрение, чтобы разобраться!