如何操作数组.找到平均值.初学者Java

use*_*782 7 java arrays double average

我有一个家庭作业,我想知道是否有人可以帮助我,因为我不熟悉Java和编程,而且我遇到了问题.问题是:

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

public double average(int[] data)
Run Code Online (Sandbox Code Playgroud)

也就是说,给定一个整数数组,数据,计算其元素的平均值是否返回平均值.例如,{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);
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*nik 14

使用增强版for会更好:

int sum = 0;
for (int d : data) sum += d;
Run Code Online (Sandbox Code Playgroud)

另一件可能会给你带来惊喜的是你将获得的错误结果

double average = sum / data.length;
Run Code Online (Sandbox Code Playgroud)

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

double average = 1.0d * sum / data.length;
Run Code Online (Sandbox Code Playgroud)

这将强制分红double,这将自动传播到除数.

  • 我们可以通过将“sum”最初指定为“double”来解决整数除法问题;或者通过在分割线上显式转换任一参数,例如“doubleaverage = ((double)sum) / data.length;” (2认同)

Cyb*_*m0n 7

-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
Run Code Online (Sandbox Code Playgroud)


sku*_*ski 6

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);
}
Run Code Online (Sandbox Code Playgroud)