Is there a way to access the date added to an ArrayList in a different to change its data?

58 Views Asked by At

I have this in the Class: public static ArrayList<String> studentInfo = new ArrayList<String>();I created a method CreateStudent() that basically allows the user to create a student using Scanner, the DisplayStudent() uses ObjectInputStream to open the file and read the data. Now, when the users creates a student, it stores the data into an ArrayList using studentInfo.add(), the idea is that the EditStudent() access the data added into the ArrayList with the info added in CreateStudent() Is there a way to access that list from another method?I would appreciate any ideas, here is my code:

import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.io.*;
import java.lang.ClassNotFoundException;
public class MidTermProject  extends ObjectOutputStream {

    private boolean append;
    private boolean initialized;
    private DataOutputStream dout;
    static AtomicInteger idGenerator = new AtomicInteger(0001);
    static int id;
    public static String FullName;
    public static String address;
    public static String city;
    public static String state;
    public static String className;
    public static String instructor;
    public static String department;
    public static String classNumber;
    public static String courseNumber;
    public static String year;
    public static String semester;
    public static String grade;
    public static String studentID;
    public static String courseID;
    public static String enrollmentID;
    
    public static ArrayList<String> studentInfo = new ArrayList<String>();
    
    Scanner keyboard = new Scanner(System.in);
    
    protected MidTermProject(boolean append) throws IOException, SecurityException {
        super();
        this.append = append;
        this.initialized = true;
    }
    
    public MidTermProject(OutputStream out, boolean append) throws IOException {
        super(out);
        this.append = append;
        this.initialized = true;
        this.dout = new DataOutputStream(out);
        this.writeStreamHeader();
    }
    
    @Override
    protected void writeStreamHeader() throws IOException {
        if (!this.initialized || this.append) return;
        if (dout != null) {
            dout.writeShort(STREAM_MAGIC);
            dout.writeShort(STREAM_VERSION);
        }
    }
    
    public static int getId() {
        return id;
    }
    ///Create Student Method
    public static void CreateStudent() throws IOException {

        File file = new File("StudentInfo.dat");
        boolean append = file.exists();
        
        Scanner keyboard = new Scanner(System.in);
        
        try (
                FileOutputStream fout = new FileOutputStream(file, append);
                MidTermProject oout = new MidTermProject(fout, append);
            ) {
            id = idGenerator.getAndIncrement();
            studentID = Integer.toString(getId());
            oout.writeObject("Student ID: " + studentID);
            
            System.out.print("\nPlease enter your information bellow.\n" + "\nFull Name: ");
            FullName = keyboard.nextLine();
            oout.writeObject("Full Name: " + FullName);
            
            System.out.print("Address: ");
            address = keyboard.nextLine();
            oout.writeObject("Address: " + address);
            
            System.out.print("City: ");
            city = keyboard.nextLine();
            oout.writeObject("City: " + city);
            
            System.out.print("State: ");
            state = keyboard.nextLine();
            oout.writeObject("State: " + state + "\n");
            
            studentInfo.add(studentID);
            studentInfo.add(FullName);
            studentInfo.add(address);
            studentInfo.add(city);
            studentInfo.add(state);
        
            oout.close();
            
            System.out.println("Done!\n");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        
    }
    ///Edit Student Method
    public static void EditStudent() throws IOException {
        String editName;
        String editaddress;
        String editCity;
        String editState;
        int editID;
        String editStudent;
        boolean endOfFile = false;
        
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print(studentInfo);
        
        System.out.print("Enter the ID of the student you would like to edit: ");
        editID = keyboard.nextInt();
        String editingID = Integer.toString(editID);
        
        FileInputStream fstream = new FileInputStream("StudentInfo.dat");
        ObjectInputStream inputFile = new ObjectInputStream(fstream);
        
        File file = new File("StudentInfo.dat");
        boolean append = file.exists();
        
        while(!endOfFile)
        {
            try
            {
                FileOutputStream fout = new FileOutputStream(file, append);
                MidTermProject oout = new MidTermProject(fout, append);
                editStudent = (String) inputFile.readObject();
                if(editingID == oout.studentID) {
                    System.out.print("\nPlease enter NEW information bellow.\n" + "\nFull Name: ");
                    editName = keyboard.nextLine();
                    oout.writeObject("Full Name: " + editName);
                        
                    System.out.print("Address: ");
                    editaddress = keyboard.nextLine();
                    oout.writeObject(editaddress);
                        
                    System.out.print("City: ");
                    editCity = keyboard.nextLine();
                    oout.writeObject(editCity);
                        
                    System.out.print("State: ");
                    editState = keyboard.nextLine();
                    oout.writeObject(editState);
                        
                    oout.close();
                        
                    System.out.print("Successfully Edited");
                } else {
                    System.out.print("Error");
                }
            }
            catch (EOFException | ClassNotFoundException e)
            {
                endOfFile = true;
            }
        }
    }
    Display Student Method
    public static void DisplayStudent() throws IOException {
        FileInputStream fstream = new FileInputStream("StudentInfo.dat");
        ObjectInputStream inputFile = new ObjectInputStream(fstream);
        
        String student;
        boolean endOfFile = false;
        
        while(!endOfFile)
        {
            try
            {
                student = (String) inputFile.readObject();
                System.out.print(student + "\n");
            }
            catch (EOFException | ClassNotFoundException e)
            {
                endOfFile = true;
            }
        }
        System.out.println("\nDone");
        
        inputFile.close();
    }
0

There are 0 best solutions below