是否有一个函数可以让数组在java中找到总和、均值和标准差
Posted
技术标签:
【中文标题】是否有一个函数可以让数组在java中找到总和、均值和标准差【英文标题】:Is there a function for an array to find the sum and mean and stdev in java 【发布时间】:2021-09-17 10:36:26 【问题描述】:我对 java 完全陌生,试图理解数组。下面的代码是我到目前为止所拥有的。我不确定我是否正确计算了总和,因为它没有打印出任何东西。关于如何使总和发挥作用的任何建议?如果它可以与平均值或标准差相关联?还是我继续循环?
编写一个名为 RainFall 的程序,将 12 个月中每个月的总降雨量存储到一个双精度数组中。该程序应显示以下内容:
一年的总降雨量。
月平均降雨量。
每月降雨量的标准差。将一年视为人口。
降雨最多的月份及其值。如果超过一个月有最大值,打印 只有第一次出现。
降雨最少的月份及其值。如果超过一个月的最小值,则仅打印第一次出现。
public static void main(String[] args)
String[] monthName = "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"; //declare the month
double[] rainfallSize = 11.5, 11.2, 11.4, 0.7, 0.5, 0.1,
0.1, 0.0, 1.2, 4.3, 7.9, 8.1; // declare the rainfall size
double Rain[] = 11.5, 11.2, 11.4, 0.7, 0.5, 0.1,
0.1, 0.0, 1.2, 4.3, 7.9, 8.1;
double Rain = 0;
for(double i : Rain)
sum += i;
for
(
int i = 0; i <=11; i++
)
System.out.printf("Month: %s, Rainfall amount: %.1f mm \n", monthName[i], rainfallSize[i]);
System.out.printf("Total Rainfall Yearly: \n", Rain);
System.out.printf("Average montly Rainfall: \n");
System.out.printf("Max Value: \n");
System.out.printf("Min value: \n");
【问题讨论】:
我很困惑为什么你像以前那样格式化了你的第一个for
循环,然后又像你一样格式化了你的第二个 for
循环。
【参考方案1】:
问题是您的代码有很多错误。 我已经修复了其中一些,但其余的我相信你可以想出
public class Rainfalls
public static void main(String[] args)
String[] monthName = "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ; // declare the month
double[] rainfallSize = 11.5, 11.2, 11.4, 0.7, 0.5, 0.1, 0.1, 0.0, 1.2, 4.3, 7.9, 8.1 ; // declare the
// rainfall size
double total_rain = 0;
for (double i : rainfallSize)
total_rain += i;
for (int i = 0; i <= 11; i++)
System.out.printf("Month: %s, Rainfall amount: %.1f mm \n", monthName[i], rainfallSize[i]);
// calculate average monthly rainfall
System.out.printf("Average montly Rainfall: \n");
System.out.printf("Total Rainfall Yearly: \n", total_rain);
// calculate max monthly rainfall
System.out.printf("Max Value: \n");
// calculate min monthly rainfall
System.out.printf("Min value: \n");
如果您发现此回复有帮助,您会否为该答案投票,以便我可以帮助其他人(并在此论坛中得到其他人的帮助)。
提前致谢
哦,输出看起来是这样的:
Month: January, Rainfall amount: 11.5 mm
Month: February, Rainfall amount: 11.2 mm
Month: March, Rainfall amount: 11.4 mm
Month: April, Rainfall amount: 0.7 mm
Month: May, Rainfall amount: 0.5 mm
Month: June, Rainfall amount: 0.1 mm
Month: July, Rainfall amount: 0.1 mm
Month: August, Rainfall amount: 0.0 mm
Month: September, Rainfall amount: 1.2 mm
Month: October, Rainfall amount: 4.3 mm
Month: November, Rainfall amount: 7.9 mm
Month: December, Rainfall amount: 8.1 mm
Average montly Rainfall:
Total Rainfall Yearly:
Max Value:
Min value:
【讨论】:
【参考方案2】:java中是否有数组求和、均值和stdev的函数?
据我所知,并非全部。但是有一个类可以让您计算一系列值的count, sum, average, min, and max
。它被称为DoubleSummaryStatistics
DoubleSummaryStatistics dss = new DoubleSummaryStatistics();
然后只需遍历您的值,如下所示。
for (double rainFall : rainfallSize)
dss.accept(rainFall);
完成后,您可以使用类的 getter 打印适当的值。
System.out.printf("Total Rainfall Yearly: %.2f mm%n",
dss.getSum());
System.out.printf("Average monthly Rainfall: %.2f mm%n",
dss.getAverage());
System.out.printf("Max Value: %.2f mm%n", dss.getMax());
System.out.printf("Min value: %.2f mm%n", dss.getMin());
打印
Total Rainfall Yearly: 57.00 mm
Average monthly Rainfall: 4.75 mm
Max Value: 11.50 mm
Min value: 0.00 mm
当您计算标准偏差等其他统计数据时(查看 Wiki 了解各种算法),您还需要遍历数据。因此,您使用与上述相同的循环并在填充摘要统计类时收集数据。
【讨论】:
以上是关于是否有一个函数可以让数组在java中找到总和、均值和标准差的主要内容,如果未能解决你的问题,请参考以下文章