ArrayList пользовательского класса не правильно сохраняет в файл? - PullRequest
0 голосов
/ 03 февраля 2020

Я планирую закодировать проект в 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";
    }

}
...