Задача прошла проверку, но на консоль выводится 2 Петрова.
То же самое было в задаче "Самый богатый" (хотя там не нужно выводить все данные, как человек ленивый, вывожу промежуточные результаты, чтоб потом долго не искать ошибку).
При чем скопированное правильное решение с добавленным выводом всего HashMap давало тот же результат.
Моя версия происходящего - в первой позиции присутсвует какой-то незримый символ начала ввода. И с этим символом воспринимается как новый ключ для HashMap.
И я так понимаю, этот символ нужно убрать:
name = line.split(" ")[0].replaceAll("[^а-яА-я]", "");
Тогда выводится все правильно и красиво, Петров (или любой другой, кто первый в списке) выводится один, но валидатор не принимает....
Я что-то не так понимаю или тут просто ошибка?
Лора
33 уровень
Два Петрова в одном HashMap
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел Безумный учёный Expert
26 августа 2021, 13:42решение
Вероятнее всего, в начале файла присутствует маркер последовательности байтов - непечатаемый символ, по которому могут быть определены кодировка файла и порядок следования байтов. Как Вы верно предположили, этот символ будет считан в составе фамилии, находящейся в первой строке файла, что и даст ещё один уникальный ключ, который при этом будет отображаться в консоли как ключ-двойник.
Для решения проблемы достаточно сохранить исходный файл в кодировке без BOM.
+2
Лора Java Developer
26 августа 2021, 19:10
Спасибо! Все получилось!!! 🙂
0
Павел Безумный учёный Expert
26 августа 2021, 19:22
На здоровье 🙂
+1