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,这将自动传播到除数.
-while(int i=0; i < data.length; i++)
+for(int i=0; i < data.length; i++)
Run Code Online (Sandbox Code Playgroud)
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)
| 归档时间: |
|
| 查看次数: |
124285 次 |
| 最近记录: |