A 2D array in Java is an array of references to 1D arrays, each of which represents a row. See Intro to 2D arrays for additional discussion.

getAverage method

The getAverage method finds the average (mean) of the elements in a 1D array.

public static double getAverage(int[] vals)
    int sum = 0;
    for(int i = 0; i < vals.length; i++)
        sum += vals[i];
    return sum / (double) vals.length;

findHighestAverage method

The findHighestAverage method accepts the 2D array scores as a parameter. Each row in scores contains the scores for 1 student. findHighestAverage returns the average of the highest scoring student. The method assumes that scores has at least 1 row.

See Finding the minimum or maximum for a discussion of the algorithm used to find the max.

public static double findHighestAverage(int[][] scores)
    double highestAverage = getAverage(scores[0]);
    for(int r = 1; r < scores.length; r++)
        double average = getAverage(scores[r]);
        if(average > highestAverage)
            highestAverage = average;
    return highestAverage;

scores[0] stores a reference to the 1D array representing the first row in scores. The call getAverage(scores[0]) passes the reference to the first row to getAverage. getAverage returns the average of the values in the first row.

scores[r] stores a reference to the row at index r in scores. The call getAverage(scores[r]) works the same as the call getAverage(scores[0]).

main method

public static void main(String[] args)
    int[] nums = new int[] {5, 6, 7};
    System.out.println(getAverage(nums)); // 6.0
    int[][] scores = new int[][] {
        {90, 75, 80, 85},  // 82.5
        {85, 90, 90, 90},  // 88.75
        {90, 95, 95, 100}, // 95
        {70, 70, 90, 60}   // 72.5
    System.out.println(findHighestAverage(scores)); // 95.0

The getAverage method accepts a 1D array as a parameter. From the perspective of getAverage, a row from a 2D array is the same as a 1D array that is not part of a 2D array.

The call getAverage(nums) passes a reference to the 1D array containing [5, 6, 7] to getAverage, which computes and returns the average (6.0).


Comment on Treating a 2D array as an array of 1D arrays