Я планирую закодировать проект в Java, который получает входные данные из 3 строк и сохраняет их в объекте Student , который будет сохранен в ArrayList из введите Student .
После добавления фиксированного числа Student объектов (ввод Students будет прерван, когда идентификатор равен 0), Мне нужно сохранить этот ArrayList в файл и прочитать его позже.
Проблема в том, что я думаю, что я успешно могу сохранить этот ArrayList в файл используя сериализацию, но я не могу правильно распечатать ArrayList, полученный из ранее созданного файла (да, я переопределил метод toString ), потому что все, что я получаю из консоли при печати, это (Я добавил 2 учеников):
[Name: null
Surname: null
ID: 0
, Name: null
Surname: null
ID: 0
]
Здесь я оставляю вам код для проверки, ребята.
Заранее большое спасибо.
Main . java
public class Main {
public static void main(String[] args) throws ClassNotFoundException {
Student.insert();
Student.print();
}
}
Студент. java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Scanner;
public class Student implements Serializable {
private int ID;
private String surname;
private String name;
public Studente (int ma, String su, String na) {
ma = ID;
su = surname;
na = name;
}
public static void insert() {
ArrayList<Student> students_array = new ArrayList<Student>();
Scanner input = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
Scanner input3 = new Scanner(System.in);
int m = 1;
String n;
String c;
while (m != 0) {
System.out.printf("\nInput ID: ");
m = input.nextInt();
if (m == 0) {
break;
}
else {
System.out.printf("\nInput name: ");
n = input2.nextLine();
System.out.printf("\nInput surname: ");
c = input3.nextLine();
student_array.add(new Student(m, n, c));
}
}
try {
FileOutputStream fileOutput = new FileOutputStream("Person.dat");
ObjectOutputStream StreamOutput = new ObjectOutputStream(fileOutput);
StreamOutput.writeObject(students_array);
StreamOutput.close();
System.out.println("Object successfully serialized.\n");
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void print() throws ClassnotFoundException {
try {
FileInputStream fileInput = new FileInputStream("Person.dat");
ObjectInputStream StreamInput = new ObjectInputStream(fileInput);
while (fileInput.available() > 0) {
ArrayList<Student> e = (ArrayList<Student>) StreamInput.readObject();
System.out.println(e);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public String toString() {
return "Name: " + name + "\nSurname: " + surname + "\nID: " + ID + "\n\n";
}
}