Вопрос №58205 от пользователя Михаил Цуранов в уроке «Модуль 1. Урок 5. Класс AbstractCollection.», курс «Java: Структуры данных»

Михаил Цуранов

Добрый вечер. Никак не решу проблему с этим упражнением :-(. (Код ревью) (хотя уже довел прохождение тестов до одного failure, а Linter вообще красиво-зеленый :-)).

Ну во-первых долго не мог понять как справится с ошибкой: java.lang.AssertionError: The remove() method does not throw an exception when it is called again (twice after next()). поэтому тупо сделал проверку через новое поле на выполнение next() перед вызовом remove(), хотя не уверен, что это "красиво". А вот почему теперь получаю ошибку: Method next() threw exception for this collection with these elements: [1, 3] не понимаю. Сам next() ведь отрабатывал нормально, ошибок не давал, чего сейчас-то не так? Может всё-таки ошибка в реализации метода remove()? Уж больно не хочется подсматривать, как это реализовано у учителя.

4 0

Михаил Цуранов

Обновил Код ревью...

это показалось лишнее в remove()

if (!hasNext()){ throw new IllegalStateException(); }

0

Сергей Алексеенко

Здравствуйте.

Тут дело в индексе. Обратите внимание, что метод remove должен удалить тот элемент, который вернул метод next.

Рекомендую расписать на бумажке, пускай пять элементов коллекции, и пройтись с карандашом по ним и расписать индексы для метода next и одновременно для метода remove. При этом обратите внимание как именно меняется индекс.

1

Михаил Цуранов

О, ДА! Спасибо разобрался!! Тесты прошли!

Посмотрел review учителя, как я и думал моя идея с проверкой nextIsCall отсутствует, хотя в этом случае можно обойтись без хранения last, как это сделано у учителя :-). Посмотрю ещё разок, что лучше.

1

Сергей Алексеенко

Не бывает идеального решения, бывают достаточные и подходящие :)

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
8 декабря 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
8 декабря 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
8 декабря 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
8 декабря 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
8 декабря 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
8 декабря 5 месяцев