И еще один адаптер

  • 20
  • Недоступна
Адаптировать Scanner к PersonScanner. Классом-адаптером является PersonScannerAdapter. В классе адаптере создать приватное финальное поле Scanner fileScanner. Поле инициализировать в конструкторе с одним аргументом типа Scanner. Данные в файле хранятся в следующем виде: Иванов Иван Иванович 31 12 19
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (342)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Олег
Уровень 29, Москва, Russian Federation
вчера, 13:59
Судя по комментам, я один не понял что от меня хотят.
Олег
Уровень 29, Москва, Russian Federation
вчера, 14:29
Короче в методе read нужно создать экземпляр класса Person, а так как это невозможно сделать без заполнения параметров конструктора, то вот их и надо спарсить с гипотетического файла, где все лежит удобненько для загнания в массив. Ну а там уж читайте как парсить дату с помощью SimpleDateFormat - https://javarush.ru/groups/posts/1941-kak-ne-poterjatjhsja-vo-vremeni--datetime-i-calendar в статье все по полочкам, что даже до меня дошло
Anonymous #3036451
Уровень 22, Falls Church, United States
10 мая, 12:19
firstName - имя lastName - фамилия middleName - отчество
Максим
Уровень 30, Саратов, Russian Federation
22 апреля, 14:07
Не совсем правильно, но пришлось дописать ParseException в метод read() интерфейса PersonScanner. Потому что при парсинге даты через SimpleDateFormat выбрасывается исключение. Если его ловить, тогда как потом, с какой датой создавать обьект Person? Валидатор не пропустит.
SimpleDateFormat formatter = new SimpleDateFormat("d M y");
Date date = formatter.parse(record[3] + " " + record[4] + " " + record[5]);
Evgenii
Уровень 20
22 апреля, 12:30
коварный месяц
6 апреля, 16:51
Gremor
Уровень 19, Гомель, Беларусь
26 апреля, 19:01
не понятно почему валидатор принимает такое решение, ведь оно не соответствует считываемой дате : 31 12 1950(пример) вместо этого выводит - Sun Dec 31 00:00:00 MSK 1950 (что по сути уже искажает информацию(хотя по условию и не прописано, что вывод должен быть такой как и считали) другое дело, если изменить немного метод toString() класса Person, добавив simpledateformat c шаблоном и вернуть значение даты с помощью него, то все становиться как при первоначальном виде (но валидатор почему т пропускает и без данного изменения). Из-за не понимания, какой правильный формат даты должен быть выведен(не тот(формат) который хранится в файле) пришлось потратить время....
@Override
   public String toString() {
       DateFormat dateFormat = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);
       return String.format("%s %s %s %s", lastName, firstName, middleName, dateFormat.format(birthDate));
   }
Zuzu
Уровень 25, Польша
29 марта, 14:05
Я погорел на том что не знал значения английских слов имя, фамилия, отчество. firstName - это имя middleName - отчество (гугл переводит как второе имя, видимо с латинских стран) lastName - фамилия
тимур
Уровень 33, Москва, Russian Federation
29 марта, 21:27
Аналогично)
The Body of the Atr
Уровень 47
11 февраля, 16:35
Всего эту задачу решили 20629 учеников.
Евгений
Уровень 28, Москва, Russian Federation
29 января, 06:51
Вот и вспомнили, как месяцы нумеруются :)
Yuri_S Инженер-конструктор 2к.
21 января, 12:07
Date birthDate = new Date(
(Integer.parseInt(data[5])-1900),
(Integer.parseInt(data[4])-1),
Integer.parseInt(data[3]));
Егор Маркин Software Architect в NASA
29 марта, 12:48
спасибо, мне помогло. но вот не понимаю почему месяц то окатывается на 1? С годом то ладно еще ясно
ViSnezh
Уровень 22, Crna Gora, Montenegro
8 апреля, 10:42
Спасибо тебе, добрчеловек
Axsell
Уровень 25, Москва, Россия
14 апреля, 13:03
отсчет месяцев начинается с нуля
Сергей Коваленко
Уровень 37, Краснодар
12 января, 08:56
дату парсил через SimpleDateFormat, прошло решение