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!!!