问题
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.
回答1:
Using an enhanced for would be even nicer:
int sum = 0;
for (int d : data) sum += d;
Another thing that will probably give you a big surprise is the wrong result that you will obtain from
double average = sum / data.length;
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 a double
. A solution would be
double average = 1.0d * sum / data.length;
This will force the dividend into a double
, which will automatically propagate to the divisor.
回答2:
-while(int i=0; i < data.length; i++)
+for(int i=0; i < data.length; i++)
回答3:
The Java 8 streaming api offers an elegant alternative:
public static void main(String[] args) {
double avg = Arrays.stream(new int[]{1,3,2,5,8}).average().getAsDouble();
System.out.println("avg: " + avg);
}
回答4:
Try this way
public void average(int[] data) {
int sum = 0;
double average;
for(int i=0; i < data.length; i++){
sum = sum + data[i];
}
average = (double)sum/data.length;
System.out.println("Average value of array element is " + average);
}
if you need to return average value you need to use double key word Instead of the void key word and need to return value return average.
public double average(int[] data) {
int sum = 0;
double average;
for(int i=0; i < data.length; i++){
sum = sum + data[i];
}
average = (double)sum/data.length;
return average;
}
回答5:
Best way to find the average of some numbers is trying Classes ......
public static void main(String[] args) {
average(1,2,5,4);
}
public static void average(int...numbers){
int total = 0;
for(int x: numbers){
total+=x;
}
System.out.println("Average is: "+(double)total/numbers.length);
}
回答6:
Well, to calculate the average of an array, you can consider using for
loop instead of while loop.
So as per your question let me assume an array as arrNumbers
( here i'm considering the same array elements as in your question )
int arrNumbers[] = new int[]{1, 3, 2, 5, 8};
int sum = 0;
for(int a = 0; a < arrNumbers.length; a++)
{
sum = sum + arrNumbers[a];
}
double average = sum / arrNumbers.length;
System.out.println("Average is: " + average);
You can use scanner
class as well. It's left to you.
回答7:
Couple of problems:
The while
should be a for
You are not returning a value but you have declared a return type of double
double average = sum / data.length;;
sum 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.
回答8:
If we want to add numbers of an Array and find the average of them follow this easy way! .....
public class Array {
public static void main(String[] args) {
int[]array = {1,3,5,7,9,6,3};
int i=0;
int sum=0;
double average=0;
for( i=0;i<array.length;i++){
System.out.println(array[i]);
sum=sum+array[i];
}
System.out.println("sum is:"+sum);
System.out.println("average is: "+(double)sum/vargu.length);
}
}
来源:https://stackoverflow.com/questions/12002332/how-to-manipulate-arrays-find-the-average-beginner-java