Average
//
// Average.java
//
public class Average
{
public static double average(double[] values)
{
double total = 0;
for (double x : values)
total += x;
return total / values.length;
}
public static void testAverage(double[] values, double expected)
{
double result = average(values);
for (double value : values)
System.out.print(value + " ");
System.out.print(" expected: " + expected +
" result: " + result + " ");
if (Math.abs(result-expected) < 1e-6) // fuzzy comparison
System.out.println("Yippee!!!");
else if (Double.isNaN(expected) && Double.isNaN(expected))
System.out.println("Yippee!!!"); // special handling for NaN
else
System.out.println("Ugh!!!");
}
public static void main(String[] args)
{
double[] values = {1.0, 3.0, 5.0};
double[] values2 = {200, 400, 600, 800};
double[] values3 = {};
testAverage(values, 3.0);
testAverage(values2, 500);
testAverage(values3, Float.NaN);
}
}
Output:
1.0 3.0 5.0 expected: 3.0 result: 3.0 Yippee!!!
200.0 400.0 600.0 800.0 expected: 500.0 result: 500.0 Yippee!!!
expected: NaN result: NaN Yippee!!!