What needs to be modified in StudentManager class so that it uses constructor instead of the following lines.
gradeBook[i].setFirstName(f Name);
gradeBook[i].setLastName(lN ame);
gradeBook[i].setTestScores( tstScores);
StudentManager. java
Tests.java
gradeBook[i].setFirstName(f Name);
gradeBook[i].setLastName(lN ame);
gradeBook[i].setTestScores( tstScores);
StudentManager. java
Code:
import java.io.*;
import java.util.*;
public class StudentManager
{
public static void main(String[] args) throws FileNotFoundException
{
Tests[] gradeBook = new Tests[10];
String fName, lName;
double[] tstScores = new double[5];
double classAverage = 0.0;
Scanner inFile =
new Scanner(new FileReader("StudentData.txt"));
for (int i = 0; i < 10; i++)
gradeBook[i] = new Tests();
for (int i = 0; i < 10; i++)
{
fName = inFile.next();
lName = inFile.next();
for (int j = 0; j < 5; j++)
tstScores[j] = inFile.nextDouble();
gradeBook[i].setFirstName(fName);
gradeBook[i].setLastName(lName);
gradeBook[i].setTestScores(tstScores);
}
System.out.println("First_Name Last_Name Test1 Test2 "
+ "Test3 Test4 Test5 Average Grade");
for (int i = 0; i < 10; i++)
{
System.out.println(gradeBook[i]);
classAverage = classAverage + gradeBook[i].getAverage();
}
classAverage = classAverage / 10;
System.out.println();
System.out.printf("Class average = %.2f%n", classAverage);
}//end main
}
Code:
public class Tests
{
private final int numberOfTests = 5;
private String firstName;
private String lastName;
private double[] testScores;
private double average;
private char grade;
Tests()
{
firstName = "";
lastName = "";
testScores = new double[numberOfTests];
average = 0.0;
grade = '*';
}
Tests(String fName, String lName, double[] ts)
{
firstName = fName;
lastName = lName;
testScores = new double[numberOfTests];
for (int i = 0; i < numberOfTests; i++)
testScores[i] = ts[i];
average = getAverage();
grade = getGrade();
}
public void setFirstName(String fName)
{
firstName = fName;
}
public void setLastName(String lName)
{
lastName = lName;
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public void setTestScores(double[] ts)
{
for (int i = 0; i < numberOfTests; i++)
testScores[i] = ts[i];
}
public void setTestScr(double scr, int index)
{
if (0 <= index && index < numberOfTests)
testScores[index] = scr;
else
System.out.println("Invalid array index.");
}
public double getTestScr(int index)
{
if (0 <= index && index < numberOfTests)
return testScores[index];
else
{
System.out.println("Invalid array index.");
return -1.0;
}
}
private void calculateAverage()
{
for (int i = 0; i < numberOfTests; i++)
average = average + testScores[i];
average = average / 5;
}
public double getAverage()
{
average = 0.0;
calculateAverage();
return average;
}
private void calculateGrade()
{
double avg = getAverage();
if (avg >= 90.00)
grade = 'A';
else if (avg >= 80.00)
grade = 'B';
else if (avg >= 70.00)
grade = 'C';
else if (avg > 60.00)
grade = 'D';
else
grade = 'F';
}
public char getGrade()
{
calculateGrade();
return grade;
}
public String toString()
{
average = 0.0;
calculateAverage();
char grade = getGrade();
String scoreString = "";
for (int i = 0; i < numberOfTests; i++)
scoreString = scoreString + String.format("%7.2f", testScores[i]);
return String.format("%-11s %-11s %35s %7.2f %5c", firstName,
lastName, scoreString, average, grade);
}
}
Comment