Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Im working on an assignment, I submitted my code but my teacher gave this feedba

ID: 3704092 • Letter: I

Question

Im working on an assignment, I submitted my code but my teacher gave this feedback:

you need to do the calculations in the Student super class. Only "get" them from the subclasses (grad and undergrad). Those two subs will be almost identical. Also, you do not have to stuff the thesis grade into a list array. There will only be one grade each run so just assign it to a variable.?

My Main Driver Class:

public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);     //Creates input ability
        boolean isTrue = true;
        while (isTrue) {
            //Welcome Message
            System.out.println("Welcome to the Student Grade Calculator");

            String firstName, lastName;       //Variable for first and last name
            System.out.println("Enter Student's First Name:");
            firstName = scanner.next();        //User inputs first name value
            System.out.println("Enter Student's Last Name:");
            lastName = scanner.next();        //User inputs last name value

            System.out.println("Select " + firstName + " " + lastName
                    + "'s student type: "
                    + "1.Under Graduate Student "
                    + //Option for grad student
                    "2.Graduate Student");             //Option for undergrad

            Student students;
            int gradeType = scanner.nextInt();
            if (gradeType == 1) {   //If user inputs 1, reach subclass Undergrad
                students = new UnderGrads(firstName, lastName);
            } else {
                students = new Grads(firstName, lastName); //reach grad subclass
            }

            //Ask for number of assignements
            int count = 0;
            int currentIndex = 1;
            System.out.println("Enter the number of Assignment grades:");

            //Depending on number of assignments input the grade numbers
            count = scanner.nextInt();
            while (currentIndex <= count) {
                System.out.println("Enter Assignment grade number"
                        + currentIndex
                        + ":");
                if (gradeType == 1) {      //adds to undergrad subclass
                    ((UnderGrads) students).addAssignments(scanner.nextFloat());
                } else {                  //adds to grad subclass
                    ((Grads) students).addAssignments(scanner.nextFloat());
                }
                currentIndex++;
            }

            //Ask for the number of discussion grades
            count = 0;
            currentIndex = 1;

            System.out.println("Enter the number of Discussion grades:");

            //Depending on number of discussion grades input the grade numbers
            count = scanner.nextInt();
            while (currentIndex <= count) {
                System.out.println("Enter Discussion grade number"
                        + currentIndex
                        + ":");
                if (gradeType == 1) {      //adds to undergrad subclass
                    ((UnderGrads) students).addDiscussions(scanner.nextFloat());
                } else {                  //adds to grad subclass
                    ((Grads) students).addDiscussions(scanner.nextFloat());
                }
                currentIndex++;
            }

            //Ask for the number of midweek assignment grades
            count = 0;
            currentIndex = 1;

            System.out.println("Enter the number of Midweek Assignment "
                    + "grades:");

            //Depending on number of midweek assignments input grade numbers
            count = scanner.nextInt();
            while (currentIndex <= count) {
                System.out.println("Enter Midweek Assignment grade number"
                        + currentIndex + ":");
                if (gradeType == 1) {      //adds to undergrad subclass
                    ((UnderGrads)
                            students).addmidweekAssignments(scanner.nextFloat());
                } else {                  //adds to grad subclass
                    ((Grads)
                            students).addmidweekAssignments(scanner.nextFloat());
                }
                currentIndex++;
            }

            //If user is a grad student they can input final thesis grades
            if (gradeType != 1) {
                count = 0;
                currentIndex = 1;

                //Get number of grades
                System.out.println("Enter the number of Final Thesis grades:");

                //Input grade amounts for users final thesis grades
                count = scanner.nextInt();
                while (currentIndex <= count) {
                    System.out.println("Enter Final Thesis grade number"
                            + currentIndex + ":");

                    ((Grads) students).addFinalThesis(scanner.nextFloat());
                    currentIndex++;     //add to grad subclass
                }
            }

            //If the user is an undergrad or grad output students final grade
            double grade = 0;
            if (gradeType == 1) {
                grade = ((UnderGrads) students).calculateGrade();
            } else {
                grade = ((Grads) students).calculateGrade();
            }
            System.out.println(firstName + " " + lastName
                    + "'s final grade average is:" + grade);

            //Ask user if they would like to run the program again
            System.out.println("Would you like to run another calculation? "
                    + "Y for Yes, N for No:");
            if (scanner.next().equalsIgnoreCase ("N")) {
                isTrue = false;

                //Goodbye Message
                System.out.println("Thank you for using the Student Calculator."
                        + " Goodbye!");
            }
        }

    } //End Main Method

}

Student Subclass:

public class Student {

    //Declare variables
    String firstName;
    String lastName;
    List<Float> assignments;
    List<Float> discussions;
    List<Float> midweekAssignments;

//Begin Main Method
    public Student(String firstName, String lastName) {
        //Users input is set to these variables
        this.firstName = firstName;
        this.lastName = lastName;
        assignments = new ArrayList<>();
        discussions = new ArrayList<>();
        midweekAssignments = new ArrayList<>();
    }

    /**
     * Method getFirstName: returns the user input when asked for first name of
     * student.
     *
     * @return
     */
    public String getFirstName() {
        return firstName;
    }

    /**
     * Method setFirstName: Sets firstName variable to the users input
     *
     * @param firstName
     */
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    /**
     * Method getLastName: returns the user input when asked for last name of
     * student.
     *
     * @return
     */
    public String getLastName() {
        return lastName;
    }

    /**
     * Method setLastName: Sets lastName variable to the users input
     *
     * @param lastName
     */
    public void setLastName(String lastName) {
        this.lastName = lastName;

    }

    /**
     * Method getAssignments: Forms the list array of grades the user inputs for
     * assignments
     *
     * @return
     */
    public List<Float> getAssignments() {
        return assignments;
    }

    /**
     * Method getDiscussions: Forms the list array of grades the user inputs for
     * discussions
     *
     * @return
     */
    public List<Float> getDiscussions() {
        return discussions;
    }

    /**
     * Method getMidweekAssignments: Forms the list array of grades the user
     * inputs for midweek assignments
     *
     * @return
     */
    public List<Float> getMidweekAssignments() {
        return midweekAssignments;
    }

    /**
     * Method addAssignments: Adds the grade numbers to assignments
     *
     * @param assignments
     */
    public void addAssignments(float assignments) {
        this.assignments.add(assignments);
    }

    /**
     * Method addDiscussions: Adds the grade numbers to discussions
     *
     * @param discussions
     */
    public void addDiscussions(float discussions) {
        this.discussions.add(discussions);
    }

    /**
     * Method addmidweekAssignments: Adds the grade numbers to midweek
     * assignments
     *
     * @param midweekAssignments
     */
    public void addmidweekAssignments(float midweekAssignments) {
        this.midweekAssignments.add(midweekAssignments);
    }
}

Grad Subclass:

public class Grads extends Student {
    //Declares list arrays the grad program will ask for

    List<Float> finalThesis;

    public Grads(String firstName, String lastName) {
        super(firstName, lastName);
        finalThesis = new ArrayList<>();
    }

    /**
     * Method getFinalThesis: Forms the list array of the final thesis grades
     *
     * @return
     */
    public List<Float> getFinalThesis() {
        return finalThesis;
    }

    /**
     * Method addFinalThesis: Adds the grade numbers to the final thesis
     *
     * @param finalThesis
     */
    public void addFinalThesis(float finalThesis) {
        this.finalThesis.add(finalThesis);
    }

    //Calculates overall grade using user input
    public double calculateGrade() {
        double grade = 0;
        float assignment = 0;
        for (int i = 0; i < assignments.size(); i++) {
            assignment += assignments.get(i);
        }
        float discussion = 0;
        for (int i = 0; i < discussions.size(); i++) {
            discussion += discussions.get(i);
        }
        float midweekAssignment = 0;
        for (int i = 0; i < midweekAssignments.size(); i++) {
            midweekAssignment += midweekAssignments.get(i);
        }

        float finalThesies = 0;
        for (int i = 0; i < finalThesis.size(); i++) {
            finalThesies += finalThesis.get(i);
        }
        //Assignments are worth 40 percent of students grade
        grade += ((assignment / assignments.size()) * 40) / 100;
        //Discussions are worth 15 percent of students grade
        grade += ((discussion / discussions.size()) * 15) / 100;
        //Midweek assignments are worth 15 percent of students grade
        grade += ((midweekAssignment / midweekAssignments.size()) * 15) / 100;
        //Final thesis are worth 15 percent of students grade
        grade += ((finalThesies / finalThesis.size()) * 15) / 100;

        //Output final grade
        return grade;
    }
}

Undergrad Subclass:

public class UnderGrads extends Student {

    public UnderGrads(String firstName, String lastName) {
        super(firstName, lastName);
    }

    //Calculates the overall grade using user input
    public double calculateGrade() {
        double grade = 0;
        float assignment = 0;
        for (int i = 0; i < assignments.size(); i++) {
            assignment += assignments.get(i);
        }
        float discussion = 0;
        for (int i = 0; i < discussions.size(); i++) {
            discussion += discussions.get(i);
        }
        float midweekAssignment = 0;
        for (int i = 0; i < midweekAssignments.size(); i++) {
            midweekAssignment += midweekAssignments.get(i);
        }
        //Assignments are worth 65 percent of students grade
        grade += ((assignment / assignments.size()) * 65) / 100;
        //Discussions are worth 25 percent of students grade
        grade += ((discussion / discussions.size()) * 25) / 100;
        //Midweek assignments are worth 10 percent of students grade
        grade += ((midweekAssignment / midweekAssignments.size()) * 10) / 100;

        //Output final grade
        return grade;
    }

}

Explanation / Answer

//1. Student

package Assignment;

import java.util.ArrayList;

import java.util.List;

public class Student {

//Declare variables

String firstName;

String lastName;

List<Float> assignments;

List<Float> discussions;

List<Float> midweekAssignments;

//Begin Main Method

public Student(String firstName, String lastName) {

//Users input is set to these variables

this.firstName = firstName;

this.lastName = lastName;

assignments = new ArrayList<>();

discussions = new ArrayList<>();

midweekAssignments = new ArrayList<>();

}

/**

* Method getFirstName: returns the user input when asked for first name of

* student.

*

* @return

*/

public String getFirstName() {

return firstName;

}

/**

* Method setFirstName: Sets firstName variable to the users input

*

* @param firstName

*/

public void setFirstName(String firstName) {

this.firstName = firstName;

}

/**

* Method getLastName: returns the user input when asked for last name of

* student.

*

* @return

*/

public String getLastName() {

return lastName;

}

/**

* Method setLastName: Sets lastName variable to the users input

*

* @param lastName

*/

public void setLastName(String lastName) {

this.lastName = lastName;

}

/**

* Method getAssignments: Forms the list array of grades the user inputs for

* assignments

*

* @return

*/

public List<Float> getAssignments() {

return assignments;

}

/**

* Method getDiscussions: Forms the list array of grades the user inputs for

* discussions

*

* @return

*/

public List<Float> getDiscussions() {

return discussions;

}

/**

* Method getMidweekAssignments: Forms the list array of grades the user

* inputs for midweek assignments

*

* @return

*/

public List<Float> getMidweekAssignments() {

return midweekAssignments;

}

/**

* Method addAssignments: Adds the grade numbers to assignments

*

* @param assignments

*/

public void addAssignments(float assignments) {

this.assignments.add(assignments);

}

/**

* Method addDiscussions: Adds the grade numbers to discussions

*

* @param discussions

*/

public void addDiscussions(float discussions) {

this.discussions.add(discussions);

}

/**

* Method addmidweekAssignments: Adds the grade numbers to midweek

* assignments

*

* @param midweekAssignments

*/

public void addmidweekAssignments(float midweekAssignments) {

this.midweekAssignments.add(midweekAssignments);

}

//Calculates overall grade using user input

public double calculateGradeForGrads(List<Float> finalThesis) {

double grade = 0;

float assignment = 0;

for (int i = 0; i < assignments.size(); i++) {

assignment += assignments.get(i);

}

float discussion = 0;

for (int i = 0; i < discussions.size(); i++) {

discussion += discussions.get(i);

}

float midweekAssignment = 0;

for (int i = 0; i < midweekAssignments.size(); i++) {

midweekAssignment += midweekAssignments.get(i);

}

float finalThesies = 0;

for (int i = 0; i < finalThesis.size(); i++) {

finalThesies += finalThesis.get(i);

}

//Assignments are worth 40 percent of students grade

grade += ((assignment / assignments.size()) * 40) / 100;

//Discussions are worth 15 percent of students grade

grade += ((discussion / discussions.size()) * 15) / 100;

//Midweek assignments are worth 15 percent of students grade

grade += ((midweekAssignment / midweekAssignments.size()) * 15) / 100;

//Final thesis are worth 15 percent of students grade

grade += ((finalThesies / finalThesis.size()) * 15) / 100;

//Output final grade

return grade;

}

//Calculates the overall grade using user input

public double calculateGrade() {

double grade = 0;

float assignment = 0;

for (int i = 0; i < assignments.size(); i++) {

assignment += assignments.get(i);

}

float discussion = 0;

for (int i = 0; i < discussions.size(); i++) {

discussion += discussions.get(i);

}

float midweekAssignment = 0;

for (int i = 0; i < midweekAssignments.size(); i++) {

midweekAssignment += midweekAssignments.get(i);

}

//Assignments are worth 65 percent of students grade

grade += ((assignment / assignments.size()) * 65) / 100;

//Discussions are worth 25 percent of students grade

grade += ((discussion / discussions.size()) * 25) / 100;

//Midweek assignments are worth 10 percent of students grade

grade += ((midweekAssignment / midweekAssignments.size()) * 10) / 100;

//Output final grade

return grade;

}

}


//2.Grads

package Assignment;

import java.util.ArrayList;

import java.util.List;

public class Grads extends Student

{

//Declares list arrays the grad program will ask for

List<Float> finalThesis;

public Grads(String firstName, String lastName) {

super(firstName, lastName);

finalThesis = new ArrayList<>();

}

/**

* Method getFinalThesis: Forms the list array of the final thesis grades

*

* @return

*/

public List<Float> getFinalThesis() {

return finalThesis;

}

/**

* Method addFinalThesis: Adds the grade numbers to the final thesis

*

* @param finalThesis

*/

public void addFinalThesis(float finalThesis) {

this.finalThesis.add(finalThesis);

}

//Calculates overall grade using user input

public double calculateGrade(List<Float> finalThesis) {

return super.calculateGradeForGrads(finalThesis);

}

}

//3. UnderGrads

package Assignment;

public class UnderGrads extends Student {

public UnderGrads(String firstName, String lastName) {

super(firstName, lastName);

}

//Calculates the overall grade using user input

public double calculateGrade() {

return super.calculateGrade();

}

}

//4.Main Class

package Assignment;

import java.util.Scanner;

public class MyMainDriver {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in); //Creates input ability

boolean isTrue = true;

while (isTrue) {

//Welcome Message

System.out.println("Welcome to the Student Grade Calculator");

String firstName, lastName; //Variable for first and last name

System.out.println("Enter Student's First Name:");

firstName = scanner.next(); //User inputs first name value

System.out.println("Enter Student's Last Name:");

lastName = scanner.next(); //User inputs last name value

System.out.println("Select " + firstName + " " + lastName

+ "'s student type: "

+ "1.Under Graduate Student "

+ //Option for grad student

"2.Graduate Student"); //Option for undergrad

Student students;

int gradeType = scanner.nextInt();

if (gradeType == 1) { //If user inputs 1, reach subclass Undergrad

students = new UnderGrads(firstName, lastName);

} else {

students = new Grads(firstName, lastName); //reach grad subclass

}

//Ask for number of assignements

int count = 0;

int currentIndex = 1;

System.out.println("Enter the number of Assignment grades:");

//Depending on number of assignments input the grade numbers

count = scanner.nextInt();

while (currentIndex <= count) {

System.out.println("Enter Assignment grade number"

+ currentIndex

+ ":");

if (gradeType == 1) { //adds to undergrad subclass

((UnderGrads) students).addAssignments(scanner.nextFloat());

} else { //adds to grad subclass

((Grads) students).addAssignments(scanner.nextFloat());

}

currentIndex++;

}

//Ask for the number of discussion grades

count = 0;

currentIndex = 1;

System.out.println("Enter the number of Discussion grades:");

//Depending on number of discussion grades input the grade numbers

count = scanner.nextInt();

while (currentIndex <= count) {

System.out.println("Enter Discussion grade number"

+ currentIndex

+ ":");

if (gradeType == 1) { //adds to undergrad subclass

((UnderGrads) students).addDiscussions(scanner.nextFloat());

} else { //adds to grad subclass

((Grads) students).addDiscussions(scanner.nextFloat());

}

currentIndex++;

}

//Ask for the number of midweek assignment grades

count = 0;

currentIndex = 1;

System.out.println("Enter the number of Midweek Assignment "

+ "grades:");

//Depending on number of midweek assignments input grade numbers

count = scanner.nextInt();

while (currentIndex <= count) {

System.out.println("Enter Midweek Assignment grade number"

+ currentIndex + ":");

if (gradeType == 1) { //adds to undergrad subclass

((UnderGrads)

students).addmidweekAssignments(scanner.nextFloat());

} else { //adds to grad subclass

((Grads)

students).addmidweekAssignments(scanner.nextFloat());

}

currentIndex++;

}

//If user is a grad student they can input final thesis grades

if (gradeType != 1) {

count = 0;

currentIndex = 1;

//Get number of grades

System.out.println("Enter the number of Final Thesis grades:");

//Input grade amounts for users final thesis grades

count = scanner.nextInt();

while (currentIndex <= count) {

System.out.println("Enter Final Thesis grade number"

+ currentIndex + ":");

((Grads) students).addFinalThesis(scanner.nextFloat());

currentIndex++; //add to grad subclass

}

}

//If the user is an undergrad or grad output students final grade

double grade = 0;

if (gradeType == 1) {

grade = ((UnderGrads) students).calculateGrade();

} else {

grade = ((Grads) students).calculateGrade();

}

System.out.println(firstName + " " + lastName

+ "'s final grade average is:" + grade);

//Ask user if they would like to run the program again

System.out.println("Would you like to run another calculation? "

+ "Y for Yes, N for No:");

if (scanner.next().equalsIgnoreCase ("N")) {

isTrue = false;

//Goodbye Message

System.out.println("Thank you for using the Student Calculator."

+ " Goodbye!");

}

}

} //End Main Method

}