В общем. я не могу понять как победить дату.
1) Сначала я попробовал из строки, передаваемой в сканер методом сплит вытащить дату рождения целиком, после этого в последний параметр класса Person вставлял просто данные с типом String:
public Person read() throws IOException {
String[] str = fileScanner.nextLine().split(" ", 4);
String date = str[3];
return new Person(str[1], str[2], str[0], str[3]
}
Вывод:Иванов Иван Иванович 31 12 1950
2) Потом использовал класс SimpleDateFormat и тоже нифига:
public Person read() throws IOException {
String[] str = fileScanner.nextLine().split(" ", 4);
String date = str[3];
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d M y", Locale.ENGLISH);
try {
Date date1 = simpleDateFormat.parse(date);
return new Person(str[1], str[2], str[0], date1);
} catch (ParseException ex) {
ex.printStackTrace();
}
return null;
}
Вывод: Иванов Иван Иванович Sun Dec 31 00:00:00 YEKT 1950package com.javarush.task.task19.task1904;
/*
И еще один адаптер
*/
import javax.sound.midi.Patch;
import java.io.IOException;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(Paths.get("C:\\Users\\user\\Desktop\\File\\1.txt.part1.txt"),"Windows-1251");
PersonScanner personScanner = new PersonScannerAdapter(scanner);
System.out.println(personScanner.read());
}
public static class PersonScannerAdapter implements PersonScanner{
private Scanner fileScanner;
public PersonScannerAdapter(Scanner fileScanner){
this.fileScanner=fileScanner;
}
@Override
public Person read() throws IOException {
String[] str = fileScanner.nextLine().split(" ", 4);
String date = str[3];
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d M y", Locale.ENGLISH);
try {
Date date1 = simpleDateFormat.parse(date);
return new Person(str[1], str[2], str[0], str[3]);
} catch (ParseException ex) {
ex.printStackTrace();
}
return null;
}
@Override
public void close() throws IOException {
fileScanner.close();
}
}
}