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
}