1  public class Student
  2  {
  3     private double[] scores;
  4     private int scoresSize;
  5  
  6     /**
  7        Constructs a student with no scores and a maximum number of scores.
  8        @capacity the maximum number of scores for this student
  9     */
 10     public Student(int capacity)
 11     {
 12        scores = new double[capacity];
 13        scoresSize = 0;
 14     }
 15  
 16     /**
 17        Adds a score for this student.
 18        @param score the score to add
 19        @return true if the score was added, false if there was no room to add the score
 20     */
 21     public boolean addScore(double score)
 22     {
 23        if (scoresSize < scores.length)
 24        {
 25           scores[scoresSize] = score;
 26           scoresSize++;
 27           return true;
 28        }
 29        else
 30        {
 31           return false;      
 32        }
 33     }
 34  
 35     /**
 36        Computes the sum of the scores of this student.
 37        @return the sum of the scores
 38     */
 39     public double sum()
 40     {
 41        double total = 0;
 42        for (int i = 0; i < scoresSize; i++)
 43        {
 44           total = total + scores[i];
 45        }
 46        return total;
 47     }
 48        
 49     /**
 50        Gets the minimum score of this student.
 51        @return the minimum score, or 0 if there are no scores.
 52     */
 53     public double minimum()
 54     {
 55        if (scoresSize == 0) { return 0; }
 56        double smallest = scores[0];
 57        for (int i = 1; i < scoresSize; i++)
 58        {
 59           if (scores[i] < smallest)
 60           {
 61              smallest = scores[i];
 62           }
 63        }
 64        return smallest;
 65     }
 66  
 67     /**
 68        Gets the final score for this student.
 69        @return the sum of the scores, with the lowest score dropped if 
 70        there are at least two scores, or 0 if there are no scores.
 71     */
 72     public double finalScore() 
 73     {
 74        if (scoresSize == 0)
 75        {
 76           return 0;
 77        }
 78        else if (scoresSize == 1)
 79        {
 80           return scores[0];
 81        }
 82        else
 83        {
 84           return sum() - minimum();
 85        }
 86     }
 87  }
 88