是否有一个函数可以让数组在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

首先,声明一个类的实例(您可以阅读 JavaDoc 以了解默认情况下这些初始值是什么)。
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中找到总和、均值和标准差的主要内容,如果未能解决你的问题,请参考以下文章

一个查询中总和的平均值

JQuery:将数字相乘到单独的数组,然后得到结果的总和

获取数组中元素的最大值最小值平均值总和

分组总和的平均值

如何计算数组中元素的总和和平均值?

是否可以在 Matlab 中的 3d 灰度数组的 CIELAB 颜色空间中使用 k 均值聚类进行分割?