Сервер не может корректно протестировать присланное решение. Убедись в наличии всех необходимых классов. Проверь, что в решении нет бесконечных циклов.
package com.javarush.task.task19.task1904;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
И еще один адаптер
*/
public class Solution {
public static void main(String[] args) {
}
public static class PersonScannerAdapter implements PersonScanner{
private final Scanner fileScanner;
public PersonScannerAdapter(Scanner fileScanner) {
this.fileScanner = fileScanner;
}
@Override
public Person read() throws IOException, ParseException {
//Иванов Иван Иванович 31 12 1950
String s = null;
Person person = null;
try {
if (!this.fileScanner.hasNext())
throw new IOException();
s = this.fileScanner.nextLine();
Pattern pattern1 = Pattern.compile("^[a-zA-zа-яА-Я]+\\s[a-zA-zа-яА-Я]+\\s[a-zA-zа-яА-Я]+");
Pattern pattern2 = Pattern.compile("\\s[a-zA-zа-яА-Я]+\\s");
Pattern pattern3 = Pattern.compile("^[a-zA-zа-яА-Я]+");
Pattern pattern4 = Pattern.compile("\\s[a-zA-zа-яА-Я]+$");
Pattern pattern5 = Pattern.compile("[0-9]{1,2}\\s[0-9]{1,2}\\s[0-9]{4}");
Matcher m = pattern1.matcher(s);
String fio = null;
if (m.find())
fio = s.substring(m.start(), m.end());
m = pattern2.matcher(fio);
String firstName = null;
if (m.find())
firstName = s.substring(m.start(), m.end()).trim();
m = pattern3.matcher(fio);
String lastName = null;
if (m.find())
lastName = s.substring(m.start(), m.end()).trim();
m = pattern4.matcher(fio);
String middleName = null;
if (m.find())
middleName = s.substring(m.start(), m.end()).trim();
m = pattern5.matcher(s);
String date = null;
if (m.find())
date = s.substring(m.start(), m.end()).trim();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MM yyyy");
Date birthDate = simpleDateFormat.parse(date);
person = new Person(firstName, middleName, lastName, birthDate);
}catch (IOException e){
System.out.println("Пустая строка");
}
return person;
}
@Override
public void close() throws IOException {
this.fileScanner.close();
}
}
}