Practical Coding in Java

Learn to write and validate your own code

Darren Kessner, PhD

(revised October 21, 2025)

Previous: HelloArrays

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

Next: