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

Write a class named TestScores. The class constructor should accept an array of

ID: 3797076 • Letter: W

Question

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 .

SAMPLE RUN #1: java Driver

Output has to read like this (Standard Output):

Problems Detected:
          The contents of your standard output is incorrect.

Given the following was entered from the keyboard:
5
70
65
94
55
90

you displayed:
Enter number of test scores:5Enter test score 1:70Enter test score 2:65Enter test score 3:94Enter test score 4:55Enter test score 5:90The average of scores : 74.8
instead of:
Enter number of test scores:Enter test score 1:Enter test score 2:Enter test score 3:Enter test score 4:Enter test score 5:74.8

What is wrong with my code:

import java.util.ArrayList;

import java.util.Scanner;

class TestScores {

   private ArrayList<Integer> testScoresArr = new ArrayList<Integer>();

   public TestScores(ArrayList<Integer> testScrsArr){
       this.testScoresArr = testScrsArr;
   }

   public float averageTestScores() throws IllegalArgumentException
   {
       float sum = 0;
       for(int iCount=0;iCount<testScoresArr.size();iCount++){
           if(testScoresArr.get(iCount) < 0 || testScoresArr.get(iCount) > 100)
           {
               throw new IllegalArgumentException("Test scores must have a value less than 100 and greater than 0.");
           }else{
               sum += testScoresArr.get(iCount);
           }
       }
    
       if(testScoresArr.size() > 0)
           return sum / testScoresArr.size();
       return 0;
   }
}

public class Driver {

   public static void main(String[] args){

       ArrayList<Integer> values = new ArrayList<Integer>();
    
       Scanner input = new Scanner(System.in);

       int totalScores = input.nextInt();

       for(int i=0;i<totalScores;i++){
           values.add(input.nextInt());
       }
    
       System.out.print("Enter number of test scores:" + totalScores);

       for(int i=0;i<totalScores;i++){
           int iCount = i+1;
           System.out.print("Enter test score "+iCount+":"+values.get(i));
       }
    
    
       // Creating an object of TestScores class
       TestScores testscores = new TestScores(values);
       try{
           float averageScore = testscores.averageTestScores();
        
           System.out.print("The average of scores : " + averageScore);
       }catch(IllegalArgumentException e){
           //e.printStackTrace();
           System.out.print(e.getMessage());
       }
   }
}

Explanation / Answer

Hi,

Please see below the corrected class and sample output. Please comment for any queries/feedbacks.

Thanks,
Anita

Driver.java


import java.util.ArrayList;
import java.util.Scanner;
class TestScores {

private ArrayList<Integer> testScoresArr = new ArrayList<Integer>();
public TestScores(ArrayList<Integer> testScrsArr){
this.testScoresArr = testScrsArr;
}

public float averageTestScores() throws IllegalArgumentException
{
float sum = 0;
for(int iCount=0;iCount<testScoresArr.size();iCount++){
if(testScoresArr.get(iCount) < 0 || testScoresArr.get(iCount) > 100)
{
throw new IllegalArgumentException("Test scores must have a value less than 100 and greater than 0.");
}else{
sum += testScoresArr.get(iCount);
}
}
  
if(testScoresArr.size() > 0)
return sum / testScoresArr.size();
return 0;
}
}

public class Driver {
   public static void main(String[] args){
   ArrayList<Integer> values = new ArrayList<Integer>();
   System.out.print("Enter number of test scores:");
   Scanner input = new Scanner(System.in);
   int totalScores = input.nextInt(); // Reading the count
   for(int i=0;i<totalScores;i++){
       System.out.print("Enter test score "+i+":");
   values.add(input.nextInt()); //reading the scores and adding the scores to values
   }
  
   // Creating an object of TestScores class
   TestScores testscores = new TestScores(values);
   try{
   float averageScore = testscores.averageTestScores();
  
   System.out.print("The average of scores : " + averageScore);
   }catch(IllegalArgumentException e){
   //e.printStackTrace();
   System.out.print(e.getMessage());
   }
   }
}

Sample output:

Enter number of test scores:5
Enter test score 0:70
Enter test score 1:65
Enter test score 2:94
Enter test score 3:55
Enter test score 4:90
The average of scores : 74.8

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote