Всем привет
Два последних пункта не проходят валидацию.
Получая данные из PEOPLE после добавления получаю вот такое. Не считая кодировку, работает правильно. Из-за кодировки и не принимает решение? Как исправить? :(
������ ���� �������� Thu Dec 31 00:00:00 EET 1987
���� Wed May 15 00:00:00 EEST 2013
����-���� Thu Mar 12 00:00:00 EET 1992
Хуан Хуанович
В метод main первым параметром приходит имя файла.
В этом файле каждая строка имеет следующий вид:
имя день месяц год
где [имя] — может состоять из нескольких слов, разделенных пробелами, и имеет тип String.
[день] — int, [месяц] — int, [год] — int
данные разделены пробелами.
Заполнить список PEOPLE используя данные из файла.
Закрыть потоки.
Пример входного файла:
Иванов Иван Иванович 31 12 1987
Вася 15 5 2013
Требования:
1. Класс Solution должен содержать публичную константу PEOPLE типа List, которая должна быть сразу проинициализирована.
2. Программа НЕ должна считывать данные с консоли.
3. Программа должна считывать содержимое файла (используй FileReader).
4. Поток чтения из файла (FileReader) должен быть закрыт.
5. Программа должна заполнить список PEOPLE данными из файла.
6. Программа должна правильно работать с двойными именами, например Анна-Надежда.
package com.javarush.task.task19.task1921;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
/*
Хуан Хуанович
*/
public class Solution {
public static final List<Person> PEOPLE = new ArrayList<Person>();
public static void main(String[] args) throws IOException {
String line, name = "", filname = args[0];
String[] parts;
int day = 0, mnth = 0, year = 0;
BufferedReader bufferedReader = new BufferedReader(new FileReader(filname));
int i = 0;
while ((line = bufferedReader.readLine()) != null) {
parts = line.split(" ");
while (!parts[i].matches("^-?\\d+$")) {
name = name + " " + parts[i];
i++;
}
if (parts[i].matches("^-?\\d+$")) { // ПРОВЕРЯЮ ЯВЛЯЕТСЯ ЛИ INTEGER
day = Integer.parseInt(parts[i]);
//i++;
mnth = Integer.parseInt(parts[i+1]);
//i++;
year = Integer.parseInt(parts[i+2]);
}
i = 0;
Date date = new GregorianCalendar(year, mnth-1, day).getTime();
PEOPLE.add(new Person(name,date));
name = "";
}
bufferedReader.close();
for (Person p :PEOPLE)
System.out.println(p.getName()+" "+p.getBirthday());
}
}
package com.javarush.task.task19.task1921;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
/*
Хуан Хуанович
*/
public class Solution {
public static final List<Person> PEOPLE = new ArrayList<Person>();
public static void main(String[] args) throws IOException {
String line, name = "", filname = args[0]; //"M:/pj.txt";//
String[] parts;
int day = 0, mnth = 0, year = 0;
BufferedReader bufferedReader = new BufferedReader(new FileReader(filname));
int i = 0;
while ((line = bufferedReader.readLine()) != null) {
parts = line.split(" ");
while (!parts[i].matches("^-?\\d+$")) {
name = name + " " + parts[i];
i++;
}
if (parts[i].matches("^-?\\d+$")) {
day = Integer.parseInt(parts[i]);
//i++;
mnth = Integer.parseInt(parts[i+1]);
//i++;
year = Integer.parseInt(parts[i+2]);
}
i = 0;
Date date = new GregorianCalendar(year, mnth-1, day).getTime();
PEOPLE.add(new Person(name,date));
name = "";
}
bufferedReader.close();
//for (Person p :PEOPLE)
// System.out.println(p.getName()+" "+p.getBirthday());
}
}