69.8k views
0 votes
Unit 6: Lesson 5 - Coding Activity 3

Debug the avg method code in the U6_L5_Activity_Three class, which is intended to return the average of the values in the parameter array of integers arr. This method must use an enhanced for loop to iterate through arr.
Use the runner class to test this method: do not add a main method to your code in the U6_L5_Activity_Three.java file or it will not be scored correctly.

public class U6_L5_Activity_Three
{
public static double avg(int[] arr)
{
int s = 0;
for (double n : arr)
{
s++;
s /= arr.length();
}
return s;
}
}

User Rishijd
by
8.4k points

1 Answer

4 votes

Here is the corrected code for the U6_L5_Activity_Three class:

public class U6_L5_Activity_Three {

public static double avg(int[] arr) {

int s = 0;

for (int n : arr) {

s += n;

}

return (double) s / arr.length;

}

}

Step-by-step explanation:

The enhanced for loop should use int data type for the variable n, as the array is of type int[].

The value of s should be incremented by the value of n in each iteration of the for loop.

The division of s by the length of the array should be done after the loop is completed, not inside it.

To get a decimal average, we need to cast s to double before dividing it by the length of the array.

We can use the following runner class to test the avg method:

public class Runner {

public static void main(String[] args) {

int[] arr1 = {5, 10, 15, 20};

System.out.println(U6_L5_Activity_Three.avg(arr1)); // expected output: 12.5

int[] arr2 = {-2, 0, 2};

System.out.println(U6_L5_Activity_Three.avg(arr2)); // expected output: 0.0

int[] arr3 = {3, 7, 11};

System.out.println(U6_L5_Activity_Three.avg(arr3)); // expected output: 7.0

}

}

User Thomas T
by
8.5k points