Привет, прошу подсказать, что валидатору не нравиться?
Также не понятно из задания:
"Метод read() класса PersonScannerAdapter должен читать строку с файла, парсить её, и возвращать данные только одного человека, в виде объекта класса Person."
Возвращать нужно данные только одного человека:
- последнего человека?
- первого человека?
- список Person?
Также прошу подсказать как можно в моём коде в цикле while сделать return, при этом, чтобы далее метод Person read() "не просил" делать return за пределами цикла while. Смысл, чтобы при каждой итерации while возвращался 1й person, 2й person и т. д..
package com.javarush.task.task19.task1904;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
И еще один адаптер
*/
public class Solution {
public static void main(String[] args) throws IOException, ParseException {
// Scanner scanner = new Scanner(System.in);
// PersonScannerAdapter personScannerAdapter = new PersonScannerAdapter(scanner);
// System.out.println(personScannerAdapter.read().toString());
}
public static class PersonScannerAdapter implements PersonScanner {
private Scanner fileScanner;
public PersonScannerAdapter(Scanner fileScanner) {
this.fileScanner = fileScanner;
}
@Override
public Person read() throws IOException, ParseException {
String testFile = fileScanner.nextLine();
String line = "";
Person person = null;
String firstName = "";
String middleName = "";
String lastName = "";
Date birthDate = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern("dd mm yyyy");
// FileReader fileReader = new FileReader("/home/pavel/JavaRushTasks/2.JavaCore/src/com/javarush/task/task19/task1904/" +
// testFile);
FileReader fileReader = new FileReader(testFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ((line = bufferedReader.readLine()) != null) {
int ind = line.indexOf(' ');
int ind2 = line.indexOf(' ', ind + 1);
int ind3 = line.indexOf(' ', ind2 + 1);
firstName = line.substring(0, ind);
middleName = line.substring(ind + 1, ind2);
lastName = line.substring(ind2 + 1, ind3);
birthDate = simpleDateFormat.parse(line.substring(ind3 + 1));
//return new Person(firstName, middleName, lastName, birthDate);
person = new Person(firstName, middleName, lastName, birthDate);
}
fileReader.close();
bufferedReader.close();
return person;
}
@Override
public void close() throws IOException {
fileScanner.close();
}
}
}