Next, let’s look at how to get the average of all elements in an array. It’s going to build off of the array sum algorithm from last time and the code will look pretty similar.
public double average(int[] ray) {
int sum = 0;
for (int i = 0; i < ray.length; i++) {
sum += ray[i];
}
return (double)sum / ray.length;
}
Most of the logic is the same as calculating the sum. In fact, we’re calculating the sum again. The difference is what we’re doing before it returns.
Notice that this method is returning a double
instead of an int
. We want the decimals, so we can’t use int
here. But that also means that we have to do a little bit of work on the last line to get the average as a double
.
If we just did sum / ray.length
, both of which are int
values, the result would be an int
and any decimals would be truncated. Not what we want.
So what we do is add a cast do sum
and it becomes (double)sum
. Now it’s a double
and we can divide it by ray.length
and get a double
as a result. We could have also cast ray.length
or cast both and it would have worked the same way. We also could have used double
instead of int
for sum
and it would have worked perfectly well.
The same logic would work with a while
loop.
public double average(int[] ray) {
double sum = 0;
int i = 0;
while (i < ray.length) {
sum += ray[i];
i++;
}
return sum / ray.length;
}
This time I did make sum
a double
just so you could see it both ways.
And a for each would be fine as well.
public double average(int[] ray) {
double sum = 0;
for (int i : ray) {
sum += i;
}
return sum / ray.length;
}
This post is part of a series of algorithms used in array manipulation