Есть код в котором я тремя способами записываю объекты в файл и потом в другом классе их достаю из файла
public class WriteObject
{
public static void main(String[] args) throws IOException
{
// first
Person person1 = new Person(1, "Mike");
Person person2 = new Person(2, "Bobe");
FileOutputStream fos = new FileOutputStream("people.bin");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(person1);
oos.writeObject(person2);
oos.close();
// Second
Person[] people = new Person[3];
Scanner scanner = new Scanner(System.in);
String name;
for(int i = 0; i < people.length; ++i)
{
name = scanner.nextLine();
people[i]= new Person(i + 1, name);
}
FileOutputStream fileOutputStream = new FileOutputStream("person.bin");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeInt(people.length);
for(Person person : people)
{
objectOutputStream.writeObject(person);
}
objectOutputStream.close();
// Third
System.out.println("Enter len of third ");
int lenOfThird = scanner.nextInt(); // 47
Person[] thirdTimes = new Person[lenOfThird];
for(int i = 0; i < lenOfThird; ++i)
{
name = scanner.nextLine();
thirdTimes[i]= new Person(i + 1, name);
}
FileOutputStream fileOutputStreamOfThird = new FileOutputStream("third.bin");
ObjectOutputStream objectOutputStreamOfThird = new ObjectOutputStream(fileOutputStreamOfThird);
objectOutputStreamOfThird.writeObject(thirdTimes);
objectOutputStreamOfThird.close();
scanner.close();
}
}
Проблема в том, что когда я создаю третий массив и начинаю заполнять с консоли, он оставляет первый элемент пустым
допустим если размерность [2] , то он дает ввести только одно имя и завершает работу и это имя присваивается второму объекту. Пробовал закрыть старый объект класса Сканер и открыть новый перед выполнением Third , но тогда он даже не хочет считывать размерность и выдает ошибку в строке 47 (помечена)