РЕДАКТИРОВАТЬ: Хорошо, я выяснил, что не так с примером кода, который вы отправили.
Вы звоните Scanner.next()
, который читает одно слово .Все значения вашего узла два слова .Так что, если я наберу «Sally Mae», то на самом деле просто ищет «Sally».
Это не имеет никакого отношения к большей части кода в BigNode
(хотя это, безусловно, можетбыть более элегантным).В основном это:
String delete = in.next();
должно быть
String delete = in.nextLine();
Теперь я бы настоятельно предложил бы вам не просто изменить код,но вместо этого подумайте о способах, которыми вы могли бы диагностировать это для себя:
- Добавьте запись в ваш код, чтобы показать искомое значение, и каждое значение при его тестировании
- Использованиеотладчик для пошагового выполнения кода, отслеживания переменных
- Используйте модульные тесты для тестирования кода - они не показали бы вам проблему (как это было не в коде, для которого вы обычно пишете тесты), ноони бы дали вам большую уверенность в том, что проблема не была в тестируемом коде.
Если вы попробуете некоторые или предпочтительно все из этих подходов,Вы узнаете намного больше из этого вопроса, чем просто как использовать Scanner
...
В разных местах вы сравниваете строку ссылки , используя== оператор.Он найдет ваш узел, только если вы передадите ссылку на один из существующих строковых объектов в списке, а не ссылку на равно строковый объект.
Вы хотите что-то вроде:
if (curr.dataitems.equals(value))
(но с тщательной проверкой null
).