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

Now you have got the basic idea of declaring and invoking method(s). Then try to

ID: 3939953 • Letter: N

Question

Now you have got the basic idea of declaring and invoking method(s). Then try to re-visit your grade calculator and put each functional module to a method. First thing you can consider to use is to put those TEN error-checking do-while loops to ONE method, and each time you just need to invoke that method. It should be a lot easier to organize your program in this way.

You can re-visit the grade calculator below:

import javax.swing.*;
import java.util.*;
public class CalculatingGrades
{
public static void main(String [] args)
{
   // initialize grades, place holders for grade inputs, arraylist used for multiple grades
int [] labGrades = new int[10];
int [] hwGrades = new int[3];
int [] quizGrades = new int[5];
int midtermGrade1;
int midtermGrade2;
double finalGrade;
  
// takes input for name
String name = JOptionPane.showInputDialog("Please Enter Student Name: 0");
  
// dialogs for each input, loops for multiple grade per section
int j = 1;
for (int i = 0; i < 10; i++){
String question = JOptionPane.showInputDialog("Please input grades for Lab " + j + ":");
int answer = Integer.parseInt(question);
labGrades[i] = answer;
j++;
}
int k = 1;
for (int i = 0; i < 3; i++){
String question = JOptionPane.showInputDialog("Please input grades for Homework " + k + ":");
int answer = Integer.parseInt(question);
hwGrades[i] = answer;
k++;
}
int l = 1;
for (int i = 0; i < 5; i++){
String question = JOptionPane.showInputDialog("Please input grades for Quiz " + l + ":");
int answer = Integer.parseInt(question);
quizGrades[i] = answer;
l++;
}
  
// take inputs for single grades
String question1 = JOptionPane.showInputDialog("Please input grades for Midterm 1");
int answer1 = Integer.parseInt(question1);
midtermGrade1 = answer1;
  
String question2 = JOptionPane.showInputDialog("Please input grades for Midterm 2");
int answer2 = Integer.parseInt(question2);
midtermGrade2 = answer2;
  

String question = JOptionPane.showInputDialog("Please input grades for Final Exam:");
int answer = Integer.parseInt(question);
finalGrade = answer;
  
// calculates the average for the array of grades
double avgLab = getAvg(labGrades);
double avgHw = getAvg(hwGrades);
double avgQuiz = getAvg(quizGrades);
  
// calculates the grade percentage
double lab = avgLab * .2;
double hw = avgHw * .15;
double quiz = avgQuiz * .15;
double midterm = midtermGrade1 * .15;
double midterm2 = midtermGrade2 * .15;
finalGrade = finalGrade * .20;
  
// calculates final, total grade
double finalClassGrade = lab + hw + quiz + midterm + midterm2 + finalGrade;
String letterGrade = "";
  
// displays which letter grade based on average
if (finalClassGrade >= 90){
   JOptionPane.showMessageDialog(null, "Congrats, you got an A. Your average was " + finalClassGrade);
   letterGrade = "A";
}
if (finalClassGrade >= 80 && finalClassGrade < 90){
   JOptionPane.showMessageDialog(null, "Congrats, you got an B. Your average was " + finalClassGrade);  
   letterGrade = "B";
}
if (finalClassGrade >= 70 && finalClassGrade < 80){
   JOptionPane.showMessageDialog(null, "Congrats, you got an C. Your average was " + finalClassGrade);
   letterGrade = "C";
}
if (finalClassGrade >= 60 && finalClassGrade < 70){
   JOptionPane.showMessageDialog(null, "Congrats, you got an D.Your average was " + finalClassGrade);
   letterGrade = "D";
}
if (finalClassGrade < 60){
   JOptionPane.showMessageDialog(null, "Congrats, you got an F. Your average was " + finalClassGrade);
   letterGrade = "F";
}
  
// Extra Credit: prints out the report in system.out.println
System.out.println("Name: " + name);
for (int i = 0; i < 10; i++){
   System.out.println("Lab " + (i+1) + ": " + labGrades[i]);
}
for(int i = 0; i < 3; i++){
   System.out.println("Homework " + (i+1) + ": " + hwGrades[i]);
}
for(int i = 0; i < 5; i++){
   System.out.println("Quiz " + (i+1) + ": " + quizGrades[i]);
}
System.out.println("Midtem 1: " + midtermGrade1 + " Midterm 2: "
                   + midtermGrade2 + " Final: " + finalGrade
                   + " Total Grade: " + finalClassGrade
                   + " Letter Grade: " + letterGrade);
  
  
}
  
// method to loop through the arraylist of grades and get an average for catagory grade
public static int getAvg(int [] n){
int avg = 0;
for (int i = 0; i < n.length; i++){
avg = avg + n[i];
}
avg = avg/n.length;
return avg;
}

}

Explanation / Answer

Used following methods

getLabGrades(labGrades);
getQuizGrades(quizGrades);
getHwGrades(hwGrades);     
midtermGrade1 = getMidTermGrade1();   
midtermGrade2 = getMidTermGrade2();   
finalGrade = getFinalGrade();

Here is complete code

import javax.swing.*;
import java.util.*;
public class CalculatingGrades
{
public static void getLabGrades(int grades[])
{
for (int i = 0; i < 10; i++){
String question = JOptionPane.showInputDialog("Please input grades for Lab " + (i+1) + ":");
int answer = Integer.parseInt(question);
grades[i] = answer;

}

}
public static void getQuizGrades(int grades[])
{
  
for (int i = 0; i < 5; i++){
String question = JOptionPane.showInputDialog("Please input grades for Quiz " + (i+1) + ":");
int answer = Integer.parseInt(question);
grades[i] = answer;
  
}
}
public static void getHwGrades(int grades[])
{
for (int i = 0; i < 3; i++){
String question = JOptionPane.showInputDialog("Please input grades for Homework " + (i+1) + ":");
int answer = Integer.parseInt(question);
grades[i] = answer;
//k++;
}
  
}
public static int getMidTermGrade1()
{
String question1 = JOptionPane.showInputDialog("Please input grades for Midterm 1");
return Integer.parseInt(question1);

}
public static int getMidTermGrade2()
{
String question2 = JOptionPane.showInputDialog("Please input grades for Midterm 2");
return Integer.parseInt(question2);

}
public static int getFinalGrade()
{
String question = JOptionPane.showInputDialog("Please input grades for Final Exam:");
return Integer.parseInt(question);


}

public static void main(String [] args)
{
// initialize grades, place holders for grade inputs, arraylist used for multiple grades
int [] labGrades = new int[10];
int [] hwGrades = new int[3];
int [] quizGrades = new int[5];
int midtermGrade1;
int midtermGrade2;
double finalGrade;
  
// takes input for name
String name = JOptionPane.showInputDialog("Please Enter Student Name: 0");
  
// dialogs for each input, loops for multiple grade per section
  
  
getLabGrades(labGrades);
getQuizGrades(quizGrades);
getHwGrades(hwGrades);
  
  
// take inputs for single grades
midtermGrade1 = getMidTermGrade1();
  
midtermGrade2 = getMidTermGrade2();
  
finalGrade = getFinalGrade();
  
// calculates the average for the array of grades
double avgLab = getAvg(labGrades);
double avgHw = getAvg(hwGrades);
double avgQuiz = getAvg(quizGrades);
  
// calculates the grade percentage
double lab = avgLab * .2;
double hw = avgHw * .15;
double quiz = avgQuiz * .15;
double midterm = midtermGrade1 * .15;
double midterm2 = midtermGrade2 * .15;
finalGrade = finalGrade * .20;
  
// calculates final, total grade
double finalClassGrade = lab + hw + quiz + midterm + midterm2 + finalGrade;
String letterGrade = "";
  
// displays which letter grade based on average
if (finalClassGrade >= 90){
JOptionPane.showMessageDialog(null, "Congrats, you got an A. Your average was " + finalClassGrade);
letterGrade = "A";
}
if (finalClassGrade >= 80 && finalClassGrade < 90){
JOptionPane.showMessageDialog(null, "Congrats, you got an B. Your average was " + finalClassGrade);
letterGrade = "B";
}
if (finalClassGrade >= 70 && finalClassGrade < 80){
JOptionPane.showMessageDialog(null, "Congrats, you got an C. Your average was " + finalClassGrade);
letterGrade = "C";
}
if (finalClassGrade >= 60 && finalClassGrade < 70){
JOptionPane.showMessageDialog(null, "Congrats, you got an D.Your average was " + finalClassGrade);
letterGrade = "D";
}
if (finalClassGrade < 60){
JOptionPane.showMessageDialog(null, "Congrats, you got an F. Your average was " + finalClassGrade);
letterGrade = "F";
}
  
// Extra Credit: prints out the report in system.out.println
System.out.println("Name: " + name);
for (int i = 0; i < 10; i++){
System.out.println("Lab " + (i+1) + ": " + labGrades[i]);
}
for(int i = 0; i < 3; i++){
System.out.println("Homework " + (i+1) + ": " + hwGrades[i]);
}
for(int i = 0; i < 5; i++){
System.out.println("Quiz " + (i+1) + ": " + quizGrades[i]);
}
System.out.println("Midtem 1: " + midtermGrade1 + " Midterm 2: "
+ midtermGrade2 + " Final: " + finalGrade
+ " Total Grade: " + finalClassGrade
+ " Letter Grade: " + letterGrade);
  
  
}
  
// method to loop through the arraylist of grades and get an average for catagory grade
public static int getAvg(int [] n){
int avg = 0;
for (int i = 0; i < n.length; i++){
avg = avg + n[i];
}
avg = avg/n.length;
return avg;
}
}