这里是初学者。我试图找到任何可以解决这个问题的问题,但我找不到,所以如果这最终是重复的,我提前道歉。
因此,我有一个名为 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/