import java.util.ArrayList;
import java.util.Scanner;

public class Classroom {
    static int[] gradeCutoffs = {90, 80, 70, 60};
    public ArrayList<Student> students = new ArrayList<>();

    public static void main(String[] args) {
        Classroom classroom = new Classroom();
        Student test = classroom.new Student("Colin", "Weis", 1, 100.0);
        Scanner scanner = new Scanner(System.in);
        boolean running = true;

        while (running) {
            System.out.println("Press 1 to view student data, 2 to add a new student, 3 to edit a student, or 4 to quit.");
            int choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    System.out.println(generateTextTable(classroom.students));
                    break;
                case 2:
                    System.out.println("First Name?");
                    String first = scanner.next();
                    System.out.println("Last Name?");
                    String last = scanner.next();
                    System.out.println("Period?");
                    int period = scanner.nextInt();
                    System.out.println("Grade(Percent)?");

                    double percentGrade = scanner.nextDouble();
                    Student newStudent = classroom.new Student(first, last, period, percentGrade);
                    break;
                case 3:
                    System.out.println("Index of student?");
                    int index = scanner.nextInt();

                    if (index >= 0 && index < classroom.students.size()) {
                        Student studentToEdit = classroom.students.get(index);
                        System.out.println("New First Name?(or skip for no change)");
                        String newFirst = scanner.next();
                        if (!newFirst.equals("skip")) {
                            studentToEdit.setFirst(newFirst);
                        }
                        System.out.println("New Last Name?(or skip for no change)");
                        String newLast = scanner.next();
                        if (!newLast.equals("skip")) {
                            studentToEdit.setLast(newLast);
                        }
                        System.out.println("New Period?(or -1 for no change)");
                        int newPeriod = scanner.nextInt();
                        if (newPeriod != -1) {
                            studentToEdit.setPeriod(newPeriod);
                        }
                        System.out.println("New Percent Grade?(or -1 for no change)");
                        double newPercentGrade = scanner.nextDouble();
                        if (newPercentGrade != -1) {
                            studentToEdit.setPercentGrade(newPercentGrade);
                        }
                    } else {
                        System.out.println("Index does not represent a student. Try checking the table.");
                    }
                    break;
                case 4:
                    running = false;
                    break;
                default:
                    System.out.println("Invalid Input");
            }
        }
        scanner.close();
    }

    //Create Student class
    public class Student {
        private String first;
        private String last;
        private int period;
        private double percentGrade;
        private char letterGrade;

        public Student(String first, String last, int period, double percentGrade) {
            this.first = first;
            this.last = last;
            this.period = period;
            this.percentGrade = percentGrade;
            this.letterGrade = calculateLetterGrade(this.percentGrade);
            students.add(this);
        }

        //Setters + Getters
        public String getFirst() {
            return first;
        }

        public void setFirst(String first) {
            this.first = first;
        }

        public String getLast() {
            return last;
        }

        public void setLast(String last) {
            this.last = last;
        }

        public int getPeriod() {
            return period;
        }

        public void setPeriod(int period) {
            this.period = period;
        }

        public double getPercentGrade() {
            return percentGrade;
        }

        public void setPercentGrade(double percentGrade) {
            this.percentGrade = percentGrade;
            this.letterGrade = calculateLetterGrade(this.percentGrade);
        }

        public char getLetterGrade() {
            return letterGrade;
        }
    }

    public static char calculateLetterGrade(double percentGrade) {
        if (percentGrade >= gradeCutoffs[0]) {
            return 'A';
        } else if (percentGrade >= gradeCutoffs[1]) {
            return 'B';
        } else if (percentGrade >= gradeCutoffs[2]) {
            return 'C';
        } else if (percentGrade >= gradeCutoffs[3]) {
            return 'D';
        } else {
            return 'F';
        }
    }

    public static String generateTextTable(ArrayList<Student> students) {
        StringBuilder sb = new StringBuilder();
        sb.append(String.format("%-10s %-10s %-10s %-10s %-10s%n", "First", "Last", "Period", "Percent", "Letter"));
        for (Student student : students) {
            sb.append(String.format("%-10s %-10s %-10d %-10.2f %-10c%n", student.getFirst(), student.getLast(), student.getPeriod(), student.getPercentGrade(), student.getLetterGrade()));
        }
        return sb.toString();
    }
}
Classroom.main(null);

Press 1 to view student data, 2 to add a new student, 3 to edit a student, or 4 to quit.
First Name?
Last Name?
Period?
Grade(Percent)?
Press 1 to view student data, 2 to add a new student, 3 to edit a student, or 4 to quit.
First      Last       Period     Percent    Letter    
Colin      Weis       1          100.00     A         
Bill       Bob        1          50.00      F         

Press 1 to view student data, 2 to add a new student, 3 to edit a student, or 4 to quit.
Index of student?
New First Name?(or skip for no change)
New Last Name?(or skip for no change)
New Period?(or -1 for no change)
New Percent Grade?(or -1 for no change)
Press 1 to view student data, 2 to add a new student, 3 to edit a student, or 4 to quit.