1 import java.util.ArrayList;
2
3 /**
4 The Student class from How To 7.1, reimplemented with an array list.
5 Note that most of the code is the same, with the [] replaced by calls
6 to the get/set methods. However, the code for adding a score is
7 simpler since we don't have to worry about running out of space.
8 Also note the use of the enhanced for loop in the sum method.
9 */
10
11 public class Student
12 {
13 private ArrayList<Double> scores;
14
15 public Student()
16 {
17 scores = new ArrayList<Double>();
18 }
19
20 /**
21 Adds a score for this student.
22 @param score the score to add
23 */
24 public void addScore(double score)
25 {
26 scores.add(score);
27 }
28
29 /**
30 Gets the position of the minimum score.
31 @return the position of the smallest element of values, or -1
32 if there are no scores.
33 */
34 public int minimumPosition()
35 {
36 if (scores.size() == 0) { return -1; }
37 int smallestPosition = 0;
38 for (int i = 1; i < scores.size(); i++)
39 {
40 if (scores.get(i) < scores.get(smallestPosition))
41 {
42 smallestPosition = i;
43 }
44 }
45 return smallestPosition;
46 }
47
48 /**
49 Computes the sum of the scores
50 @return the total score
51 */
52 public double sum()
53 {
54 double total = 0;
55 for (double score : scores)
56 {
57 total = total + score;
58 }
59 return total;
60 }
61
62 /**
63 Removes a score at a given position.
64 @param pos the position of the score to remove
65 */
66 public void removeScore(int pos)
67 {
68 scores.remove(pos);
69 /*
70 Alternatively, for a more efficient implementation,
71 follow Section 7.3.6:
72 int lastPosition = scores.size() - 1;
73 scores.set(pos, scores.get(lastPosition));
74 scores.remove(lastPosition);
75 */
76 }
77 }
78