С двойными именами тоже работает правильно.
package com.javarush.task.task19.task1921;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Хуан Хуанович
*/
public class Solution {
public static final List<Person> PEOPLE = new ArrayList<Person>();
public static void main(String[] args) throws IOException {
BufferedReader fr = new BufferedReader(new FileReader(args[0]));
String array[];
while (fr.ready()) {
String name = "";
String date = "";
array = fr.readLine().split(" ");
Pattern r = Pattern.compile("[0-9]");
for (int i = 0; i < array.length; i++) {
Matcher m = r.matcher(array[i]);
if (!m.find()) {
name = name + array[i] + " ";
} else date = date + array[i] + " ";
}
name.trim();
date.trim();
SimpleDateFormat sdf = new SimpleDateFormat("d M yyyy");
try {
PEOPLE.add(new Person(name, sdf.parse(date)));
} catch (ParseException e){
e.printStackTrace();
}
}
fr.close();
}
}