I have a homework assignment and I was wondering if anyone could help me as I am new to Java and programming and am stuck on a question. The question is:
The first method finds the average of the elements of an integer array:
public double average(int[] data)
That is, given an integer array, data, calculate the average of its elements are return the average value. For example, the average of {1, 3, 2, 5, 8} is 3.8.
Here is what I have done so far:
public double average(int[] data) {
int sum = 0;
while(int i=0; i < data.length; i++)
sum = sum + data[i];
double average = sum / data.length;;
System.out.println("Average value of array element is " " + average);
}
When compiling it I get an error message at the int i=0
part saying '.class expected'. Any help would be appreciated.
Using an enhanced for would be even nicer:
Another thing that will probably give you a big surprise is the wrong result that you will obtain from
Reason: on the right-hand side you have integer division and Java will not automatically promote it to floating-point division. It will calculate the integer quotient of
sum/data.length
and only then promote that integer to adouble
. A solution would beThis will force the dividend into a
double
, which will automatically propagate to the divisor.Couple of problems:
The
while
should be afor
You are not returning a value but you have declared a return type of doublesum and data.length are both ints so the division will return an int - check your types
double semi-colon, probably won't break it, just looks odd.