9

我有一个家庭作业,我想知道是否有人可以帮助我,因为我是 Java 和编程的新手并且被困在一个问题上。问题是:

第一种方法求整数数组元素的平均值:

public double average(int[] data)

即给定一个整数数组,data,计算其元素的平均值,均返回平均值。例如,{1, 3, 2, 5, 8} 的平均值为 3.8。

这是我到目前为止所做的:

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);
}

int i=0编译它时,我在“.class expected”部分收到一条错误消息。任何帮助,将不胜感激。

4

8 回答 8

16

使用增强的 for 会更好:

int sum = 0;
for (int d : data) sum += d;

另一件可能会让您大吃一惊的事情是您将获得的错误结果

double average = sum / data.length;

原因:右侧有整数除法,Java 不会自动将其提升为浮点除法。它将计算 的整数商,sum/data.length然后才将该整数提升为 a double。一个解决方案是

double average = 1.0d * sum / data.length;

这将迫使被除数变为 a double,这将自动传播到除数。

于 2012-08-17T08:30:21.850 回答
9

Java 8 流 api 提供了一个优雅的替代方案:

public static void main(String[] args) {
    double avg = Arrays.stream(new int[]{1,3,2,5,8}).average().getAsDouble();

    System.out.println("avg: " + avg);
}
于 2017-10-05T12:11:35.957 回答
7
-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
于 2012-08-17T08:28:45.140 回答
0

试试这个方法

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);    
}

如果需要返回平均值,则需要使用关键字而不是void关键字,并且需要返回值返回平均值

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;    
}
于 2012-08-17T10:09:08.777 回答
0

找到一些数字的平均值的最好方法是尝试 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);

}
于 2015-06-02T16:14:57.263 回答
0

好吧,要计算数组的平均值,您可以考虑使用for循环而不是 while 循环。

因此,根据您的问题,让我假设一个数组为arrNumbers(这里我正在考虑与您的问题中相同的数组元素)

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);

您也可以使用scanner类。它留给你。

于 2017-10-05T11:56:44.527 回答
-1

几个问题:

while应该是for 你没有返回一个值,但你已经声明了一个返回类型为double

double average = sum / data.length;;

sum 和 data.length 都是整数,因此除法将返回一个整数 - 检查您的类型

双分号,可能不会破坏它,只是看起来很奇怪。

于 2012-08-17T08:33:24.773 回答
-1

如果我们想添加一个数组的数字并找到它们的平均值,请遵循这个简单的方法!......

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);



    }

}
于 2015-06-02T13:05:30.173 回答