1 |
/** |
2 |
This class computes the average of a set of data values. |
3 |
*/ |
4 |
public class DataSet |
5 |
{ |
6 |
/** |
7 |
Constructs an empty data set. |
8 |
*/ |
9 |
public DataSet() |
10 |
{ |
11 |
final int DATA_LENGTH = 100; |
12 |
data = new double[DATA_LENGTH]; |
13 |
dataSize = 0; |
14 |
} |
15 |
|
16 |
/** |
17 |
Adds a data value to the data set |
18 |
@param x a data value |
19 |
*/ |
20 |
public void add(double x) |
21 |
{ |
22 |
if (dataSize >= data.length) |
23 |
{ |
24 |
// make a new array of twice the size |
25 |
double[] newData = new double[2 * data.length]; |
26 |
// copy over all elements from data to newData |
27 |
System.arraycopy(data, 0, newData, 0, data.length); |
28 |
// abandon the old array and store in data |
29 |
// a reference to the new array |
30 |
data = newData; |
31 |
} |
32 |
data[dataSize] = x; |
33 |
dataSize++; |
34 |
} |
35 |
|
36 |
/** |
37 |
Gets the average of the added data. |
38 |
@return the average or 0 if no data has been added |
39 |
*/ |
40 |
public double getAverage() |
41 |
{ |
42 |
if (dataSize == 0) return 0; |
43 |
double sum = 0; |
44 |
for (int i = 0; i < dataSize; i++) |
45 |
sum = sum + data[i]; |
46 |
return sum / dataSize; |
47 |
} |
48 |
|
49 |
private double[] data; |
50 |
private int dataSize; |
51 |
} |