Проверил на Анна-Надежда- подтягивает корректно. В чем причина?
package com.javarush.task.task19.task1921;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
В метод main первым параметром приходит имя файла.
В этом файле каждая строка имеет следующий вид:
имя день месяц год
где [имя] - может состоять из нескольких слов, разделенных пробелами, и имеет тип String.
[день] - int, [месяц] - int, [год] - int
данные разделены пробелами.
Заполнить список PEOPLE используя данные из файла.
Закрыть потоки.
Пример входного файла:
Иванов Иван Иванович 31 12 1987
Вася 15 5 2013
Требования:
1. Класс Solution должен содержать публичную константу PEOPLE типа List<Person>, которая должна быть сразу проинициализирована.
2. Программа НЕ должна считывать данные с консоли.
3. Программа должна считывать содержимое файла (используй FileReader).
4. Поток чтения из файла (FileReader) должен быть закрыт.
5. Программа должна заполнить список PEOPLE данными из файла.
6. Программа должна правильно работать с двойными именами, например Анна-Надежда.
*/
public class Solution {
public static final List<Person> PEOPLE = new ArrayList<Person>();
public static void main(String[] args) throws IOException, ParseException {
//FileReader reader = new FileReader("/home/taras/Документы/f1");
FileReader reader = new FileReader(args[0]);
BufferedReader bf = new BufferedReader(reader);
while (bf.ready()){
String[] sc = bf.readLine().split(" ");
StringBuilder name = new StringBuilder();
for (int i = 0; i < sc.length; i++) {
if (sc[i]==sc[sc.length-3] || sc[i]==sc[sc.length-2] || sc[i]==sc[sc.length-1] ) {
}
else {
name.append(sc[i]);
name.append(" ");
}
}
String name1 = name.toString();
DateFormat df = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);
Date bd = df.parse(sc[sc.length-3] + " " + sc[sc.length-2] + " " + sc[sc.length-1]);
Person person = new Person(name1, bd);
PEOPLE.add(person);
//System.out.println(person.getName() + " " + person.getBirthDate());
}
// for (int i = 0; i < PEOPLE.size(); i++) {
// System.out.println(PEOPLE.get(i).getName() + PEOPLE.get(i).getBirthDate());
// }
reader.close();
bf.close();
}
}