Кому непонятно зачем я добавил поле Date в PersonScannerAdapter и метод dateproblem - чтобы решить проблему, суть в которой в том, что нужно ОБЯЗАТЕЛЬНО прописать return в методе read() и у меня получалось прописать его только в блоке try, а если прописывать ещё в catch, то была бы рекурсия. Кстати, только что узнал, если написать в гугле рекурсия, гугл предложит свой вариант и вы попадете в рекурсию.
package com.javarush.task.task19.task1904;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/*
И еще один адаптер
*/
public class Solution {
public static void main(String[] args) throws IOException{
PersonScannerAdapter psa = new PersonScannerAdapter(new Scanner(new File("/Users/Hleb/Desktop/file.txt")));
System.out.println(psa.read());
}
public static class PersonScannerAdapter implements PersonScanner {
Date date;
private Scanner fileScanner;
PersonScannerAdapter(Scanner scanner ){
this.fileScanner = scanner;
}
@Override
public Person read() throws IOException {
String massive[] = fileScanner.nextLine().split(" ");
SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy");
try{
Date date = sdf.parse(massive[3] + " " + massive[4] + " " + massive[5]);
dateproblem(date);
} catch (ParseException e){
e.printStackTrace();
}
return new Person(massive[1], massive[2], massive[0], date);
}
public void dateproblem(Date date){
this.date = date;
}
@Override
public void close() throws IOException {
this.fileScanner.close();
}
}
}