I viewed one of the solutions to this problem on your site, however in viewing t
ID: 3816969 • Letter: I
Question
I viewed one of the solutions to this problem on your site, however in viewing the class I noted that the setScores method wouldn't work because you have a studentNumber that is an int and a double scores array passed as parameter arguements. This won't work in java. Can you help with this problem? I will paste the code to this so you can see what I'm talking about.
Thank you for your help with this.
K Pace
// Create the class GradeBook
public class GradeBook
{
// Create finals/constants
private final int STUDENTS = 5;
private final int TESTS = 4;
// Create arrays
private String[] names = new String[STUDENTS];
private char[] grades = new char[STUDENTS];
private double[] score1 = new double[TESTS];
private double[] score2 = new double[TESTS];
private double[] score3 = new double[TESTS];
private double[] score4 = new double[TESTS];
private double[] score5 = new double[TESTS];
private double[] testScores = new double[5];
private double[] average = new double[5];
public GradeBook()
{
}
/**
The setName method assigns student names.
@param studentNumber The student's number.
@param name The Student's name.
*/
public void setName(String name, int studentNumber)
{
names[studentNumber - 1] = name;
}
/**
The getName method returns student names.
@param studentNumber The specified student's number.
@return The student names.
*/
public String getName(int studentNumber)
{
return names[studentNumber-1];
}
/**
copyArray is a private method for copying one array contents to another.
@param to The array to copy to.
@param from The array to copy from.
*/
private void copyArray(double[] to, double[]from)
{
System.arraycopy(from, 0, to, 0, from.length);
/**
The setScores method copies student testscore arrays to studentarrays.
@param studentNumber The student number
@param scores An array of test scores
*/
public void setScores(int studentNumber, double[]scores)
{
switch(studentNumber)
{
case 1:
copyArray(score1, scores);
break;
case 2:
copyArray(score2, scores);
break;
case 3:
copyArray(score3, scores);
break;
case 4:
copyArray(score4, scores);
break;
case 5:
copyArray(score5, scores);
break;
default:
break;
}
}
/**
The calcAverage is a private method to calculate
the average from the array of test scores.
@param scores The array with the test scores.
*/
private double calcAverage(double[] scores)
{
double sum = 0;
int i;
for(i = 0; i < scores.length; i++)
sum = sum + scores[i];
return sum / scores.length;
}
/**
The getAverge method returns a student's average test score.
@param studentNumber The student number
@return The student average test scores
*/
public double getAverage(int studentNumber)
{
// To hold the average.
double average = 0.0;
switch (studentNumber)
{
case 1:
average = calcAverage(score1);
break;
case 2:
average = calcAverage(score2);
break;
case 3:
average = calcAverage(score3);
break;
case 4:
average = calcAverage(score4);
break;
case 5:
average = calcAverage(score5);
break;
default:
break;
}
return average;
}
/**
The getLetterGrade method returns the student letter grade
@param studentNumber The specified student number.
@return The student letter grade
*/
public char getLetterGrade(int studentNumber)
{
char lettergrade;
if (getAverage(studentNumber) >= 90.0 && getAverage(studentNumber) <= 100.0)
{
lettergrade = 'A';
}
else if (getAverage(studentNumber) >= 80.0 && getAverage(studentNumber) <= 89.0)
{
lettergrade = 'B';
}
else if (getAverage(studentNumber) >= 70.0 && getAverage(studentNumber) <= 79.0)
{
lettergrade = 'C';
}
else if (getAverage(studentNumber) >= 60.0 && getAverage(studentNumber) <= 69.0)
{
lettergrade = 'D';
}
else
lettergrade = 'F';
return lettergrade;
}
/**
assignGrades method is a private method that assigns a letter grade to each student.
@param studentNumber The specified student's number.
*/
private char assignGrade(int studentNumber)
{
grades[studentNumber -1] = getLetterGrade(studentNumber);
return grade;
}
/**
determineGrade is a publie method that deterines a letter grade for the student average.
@param average The test average
@return The letter grade
*/
public char determineGrade(double average)
{
char lettergrade;
if(average >= 90 && average <= 100)
lettergrade = 'A';
else if (average >= 80 && average < 89)
lettergrade = 'B';
else if (average >= 70 && average < 79)
lettergrade = 'C';
else if (average >= 60 && average < 69)
lettergrade = 'D';
else
lettergrade = 'F';
return lettergrade;
}
}
}
Explanation / Answer
i have rectified your code there was issue with the braces of the function
please find the code
public class GradeBook
{
// Create finals/constants
private final int STUDENTS = 5;
private final int TESTS = 4;
// Create arrays
private String[] names = new String[STUDENTS];
private char[] grades = new char[STUDENTS];
private double[] score1 = new double[TESTS];
private double[] score2 = new double[TESTS];
private double[] score3 = new double[TESTS];
private double[] score4 = new double[TESTS];
private double[] score5 = new double[TESTS];
private double[] testScores = new double[5];
private double[] average = new double[5];
public GradeBook()
{
}
/**
The setName method assigns student names.
@param studentNumber The student's number.
@param name The Student's name.
*/
public void setName(String name, int studentNumber)
{
names[studentNumber - 1] = name;
}
/**
The getName method returns student names.
@param studentNumber The specified student's number.
@return The student names.
*/
public String getName(int studentNumber)
{
return names[studentNumber-1];
}
/**
copyArray is a private method for copying one array contents to another.
@param to The array to copy to.
@param from The array to copy from.
*/
private void copyArray(double[] to, double[]from)
{
System.arraycopy(from, 0, to, 0, from.length);
}
/**
The setScores method copies student testscore arrays to studentarrays.
@param studentNumber The student number
@param scores An array of test scores
*/
public void setScores(int studentNumber, double[]scores)
{
switch(studentNumber)
{
case 1:
copyArray(score1, scores);
break;
case 2:
copyArray(score2, scores);
break;
case 3:
copyArray(score3, scores);
break;
case 4:
copyArray(score4, scores);
break;
case 5:
copyArray(score5, scores);
break;
default:
break;
}
}
/**
The calcAverage is a private method to calculate
the average from the array of test scores.
@param scores The array with the test scores.
*/
private double calcAverage(double[] scores)
{
double sum = 0;
int i;
for(i = 0; i < scores.length; i++)
sum = sum + scores[i];
return sum / scores.length;
}
/**
The getAverge method returns a student's average test score.
@param studentNumber The student number
@return The student average test scores
*/
public double getAverage(int studentNumber)
{
// To hold the average.
double average = 0.0;
switch (studentNumber)
{
case 1:
average = calcAverage(score1);
break;
case 2:
average = calcAverage(score2);
break;
case 3:
average = calcAverage(score3);
break;
case 4:
average = calcAverage(score4);
break;
case 5:
average = calcAverage(score5);
break;
default:
break;
}
return average;
}
/**
The getLetterGrade method returns the student letter grade
@param studentNumber The specified student number.
@return The student letter grade
*/
public char getLetterGrade(int studentNumber)
{
char lettergrade;
if (getAverage(studentNumber) >= 90.0 && getAverage(studentNumber) <= 100.0)
{
lettergrade = 'A';
}
else if (getAverage(studentNumber) >= 80.0 && getAverage(studentNumber) <= 89.0)
{
lettergrade = 'B';
}
else if (getAverage(studentNumber) >= 70.0 && getAverage(studentNumber) <= 79.0)
{
lettergrade = 'C';
}
else if (getAverage(studentNumber) >= 60.0 && getAverage(studentNumber) <= 69.0)
{
lettergrade = 'D';
}
else
lettergrade = 'F';
return lettergrade;
}
/**
assignGrades method is a private method that assigns a letter grade to each student.
@param studentNumber The specified student's number.
*/
private char assignGrade(int studentNumber)
{
grades[studentNumber -1] = getLetterGrade(studentNumber);
return grades[studentNumber -1];
}
/**
determineGrade is a publie method that deterines a letter grade for the student average.
@param average The test average
@return The letter grade
*/
public char determineGrade(double average)
{
char lettergrade;
if(average >= 90 && average <= 100)
lettergrade = 'A';
else if (average >= 80 && average < 89)
lettergrade = 'B';
else if (average >= 70 && average < 79)
lettergrade = 'C';
else if (average >= 60 && average < 69)
lettergrade = 'D';
else
lettergrade = 'F';
return lettergrade;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.