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;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.