java - 访问 ArrayList 中每个数组的第一个元素并对所有元素求平均值

标签 java arrays arraylist

这里是初学者。我试图找到任何可以解决这个问题的问题,但我找不到,所以如果这最终是重复的,我提前道歉。

因此,我有一个名为 pay 的 Double[],其中包含三个 Double 值(totalPay、basePay、hoursWorked),我将它们存储在名为 payList 的 ArrayList 中。

我正在寻找一种方法来确定平均总工资、平均基本工资和平均工作时间, 我尝试使用 foreach,但似乎不起作用。

         Double avgTotalPay=0.0;
         Double avgBasePay=0.0;
         Double avgHoursWworked=0.0;

         for(Double paym[] : payList){  
             for(Double p: paym){       
             avgTotalPay+=paym[0];
             }

            avgTotalPay=avgTotalPay/payList.size(); 
         }

         for(Double paym[] : payList){ 
             for(Double p: paym){       
             avgBasePay+=paym[1];
             }

            avgBasePay=avgBasePay/payList.size(); 
         }       


         for(Double paym[] : payList){ 
             for(Double p: paym){       
             avgHoursWworked+=paym[2];
             }

            avgHoursWworked=avgHoursWworked/payList.size(); 
         }  

         System.out.println("Average Total Pay is: "+avgTotalPay+"\n Average Base Pay is: "+avgBasePay
                 +"\n Average number of hours worked is: "+avgHoursWworked);

(当用户输入 0 作为基本工资和工作小时数时,该函数应计算总工资、基本工资和工作小时数的平均值。)
请输入基本工资:
10
请输入工作时数:
10
总工资为 100.0 美元,每小时工资为 10.0 美元

请输入基本工资:
500
请输入工作时数:
50
总工资为 $1000.0 美元,每小时工资为 $20.0 美元(最高总工资不能超过
$1000)
请输入基本工资:
0
请输入工作时数:
0
平均总工资为:2250.0
平均基本工资为:1125.0
平均工作时间为:112.5

如果我手动计算平均值,它们应该是
总工资 550 美元,
250 美元基本工资,以及
30 工作小时数

最佳答案

您不需要所有这些循环,也不需要使用 Double 包装器。一个循环就足够了,没有内循环。就像,

double avgTotalPay = 0.0;
double avgBasePay = 0.0;
double avgHoursWworked = 0.0;
for (Double[] paym : payList) {
    avgTotalPay += paym[0];
    avgBasePay += paym[1];
    avgHoursWworked += paym[2];
}
avgTotalPay /= payList.size();
avgBasePay /= payList.size();
avgHoursWworked /= payList.size();

或者,如果您使用的是 Java 8+,您可以使用 Stream(s) 来实现,例如

double avgTotalPay = payList.stream().mapToDouble(x -> x[0]).average()
        .orElse(0);
double avgBasePay = payList.stream().mapToDouble(x -> x[1]).average()
        .orElse(0);
double avgHoursWworked = payList.stream().mapToDouble(x -> x[2]).average()
        .orElse(0);

关于java - 访问 ArrayList 中每个数组的第一个元素并对所有元素求平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46499292/

相关文章:

java - 在java中对半空数组进行排序

java - 对复杂类型的 ArrayList 进行排序

java - JAVA中查找子字符串的最快方法

java - 将 ID 列表与其对应的对象进行匹配

c - 如何显示字母在矩阵中的位置?

java - 部署/发布/调试 Java Web 应用程序的常见做法

java - 使用 HttpURLConnection 读取 session 变量

java - 创建 Windows 10 持久通知

javascript - 查找对象中的值翻倍需要多少天

java - 检查列内的特定字符串 ,, android studio