https://javarush.com/tasks/com.javarush.task.task08.task0816
Создать словарь (Map<String, Date>) и занести в него десять записей по принципу: "фамилия" - "дата рождения".
Удалить из словаря всех людей, родившихся летом.
Требования:
• Программа не должна выводить текст на экран.
• Программа не должна считывать значения с клавиатуры.
• Метод createMap() должен создавать и возвращать словарь HashMap с типом элементов String, Date состоящий из 10 записей.
• Метод removeAllSummerPeople() должен удалять из словаря всех людей, родившихся летом.
package com.javarush.task.task08.task0816;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Iterator;
import java.util.Map;
/*
Добрая Зинаида и летние каникулы
*/
public class Solution {
public static HashMap<String, Date> createMap() throws ParseException {
DateFormat df = new SimpleDateFormat("MMMMM d yyyy", Locale.ENGLISH);
HashMap<String, Date> map = new HashMap<String, Date>();
map.put("Stallone", df.parse("JUNE 1 1980"));
map.put("Stalone", df.parse("JUNE 1 1980"));
map.put("Stllone", df.parse("JUNE 1 1980"));
map.put("Sallone", df.parse("DECEMBER 1 1980"));
map.put("tallone", df.parse("JUNE 1 1980"));
map.put("Sllone", df.parse("JUNE 1 1980"));
map.put("allone", df.parse("JULY 1 1980"));
map.put("llone", df.parse("OCTOBER 1 1980"));
map.put("one", df.parse("SEPTEMBER 1 1980"));
map.put("ne", df.parse("MAY 1 1980"));
return map;
}
public static void removeAllSummerPeople(HashMap<String, Date> map) {
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
String value = (String)entry.getValue().toString();
if (value.contains("JUNE") || value.contains("JULY") || value.contains("AUGUST") ) {
entries.remove();
}
}
}
public static void main(String[] args) throws ParseException {
removeAllSummerPeople(createMap());
}
}
Dmitry Kovalyov
14 уровень
Не проходит валидацию по поледнему пункту, не пойму почему.
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
9 января 2019, 20:45
String value = (String)entry.getValue().toString();
В этой строке метод toString() возвращает строку, где храниться дефолтное представление объекта Date, а там нет полных названий месяцев большими буквами, пример:
Wed Oct 01 00:00:00 EET 1980
Так что тут два варианта, либо снова использовать DateFormat, либо, что проще, изменить месяцы в условии.
0