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