В ТЗ пункт - "2. Метод printStudents должен выводить всех студентов (имя и фамилия) из коллекции grades с новой строки." > Имя и фамилия. Смотрим исходный код задачи: grades.put("Давыдов Олег", 4.3d); grades.put("Шульга Николай", 4.1d); grades.put("Колос Василий", 4.9d); grades.put("Шевченко Тарас", 3.7d); grades.put("Марчук Любослав", 3.2d); наблюдаем очевидную картину, что в ключе идет сначала фамилия, потом имя. Делаем логичный вывод, необходимо не просто написать sout для каждого ключа, а реверснуть ключ так, чтобы сначала шло имя. Пишем мотню кода: public static void printStudents() { ArrayList<String> namesUnsorted = new ArrayList<String>(); ArrayList<String> namesSorted = new ArrayList<String>(); for (String key : grades.keySet()) { namesUnsorted.add(key); } for (String name : namesUnsorted) { int index = name.indexOf(' '); String firstName = name.substring(index + 1); String secondName = name.substring(0, index); namesSorted.add(firstName + " " + secondName); } int count = 0; for (String key : grades.keySet()) { System.out.println(namesSorted.get(count)); count++; } } И что получаем? Правильно, получаем "Задача не прошла тестирование" Далее, ломаем всю голову на темы: "Да что этому ссутулому валидатору от меня надо?" "Может он хочет чтобы я работал напрямую с мапой, не прибегая к созданию коллекций-копий? Но это же жесть!" и т.д. Окончательно сдавшись, лезем проверять решение задачи у других юзеров. И что мы видим? Мы видим это чудо: for (String name : grades.keySet()) { System.out.println(name); } Думаем "Да не, не могли они так ошибиться" Думаем еще "Стопудово не может так работать, у них в задачах обычно ТЗ очень внимательно надо читать, в них заковырки" Не верим, но пробуем скопировать. > "Задача успешно прошла тестирование!" Медленно теряем рассудок.