Write a class named TestScores. The class constructor should accept an array of test scores as its argument. The class should have a method that returns the average of the test scores.

LANGUAGE: JAVA

CHALLENGE:

Write a class named TestScores.
The class constructor should accept an array of test scores as its argument.
The class should have a method that returns the average of the test scores.

If any test score in the array is negative or greater than 100, the class should throw an IllegalArgumentException.
Demonstrate the class in a program (create a Driver class in the same file).

The program should ask the user to input the number of test scores to be counted,
and then each individual test score. It should then make an array of those scores,

create a TestScore object , and print the average of the scores.
If an IllegalArgumentException is thrown, the main method should catch it, print “Test scores must have a value less than 100 and greater than 0.” and terminate the program .

SOLUTION:

public class TestScores
{
    private double[] scores;
    double total = 0;

    public TestScores(double array[])
    {
        for (int i = 0; i < array.length; i++)
        {
            scores = new double[array.length];
            if (array[i] < 0 || array[i] > 100)
            {
                throw new IllegalArgumentException("Bad scores" + "\n\tInvalid score found." + "\n\tElement: " + i + " Score: " + array[i]);
            }
            else
            {
                scores[i] = array[i];
                total += array[i];
            }
        }
    }

    public double getAverage()
    {
        return total / scores.length;
    }
}

public class TestScoresDemo
{
    public static void main(String[] args) throws Exception
    {
        double[] badScores = { 97.5, 66.7, 88.0, 10.0, 99.0 };
        double[] goodScores = { 97.5, 66.7, -88.0, 100.0, 99.0 }; // Good scores is actually bad
        TestScores test=null;

        try
        {
            test = new TestScores(badScores);
        }
        catch (IllegalArgumentException e)
        {
            System.out.println(e.getMessage());
        }

        try
        {
            test = new TestScores(goodScores);
        }
        catch (IllegalArgumentException e)
        {
            System.out.println(e.getMessage());
        }

        System.out.print("Good scores"+ "\n\tThe average of the good scores is " + test.getAverage());
    }
}