当前位置: 首页 > 知识库问答 >
问题:

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

何安宜
2023-03-14

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

因此,我有一个Double[]名为pay,包含三个Double值(totalPay、basePay、HoursWorkd),我将其存储在一个名为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,时薪为$20.0/小时(最大总薪资不能超过
$1000)
请输入基本薪资:
0
请输入工作时数:
0
平均总薪资为:2250.0
平均基本工资为:1125.0
平均工作时数为:112.5

如果我手工计算平均值,则总工资应为
$550,基本工资应为
$250,工作时数应为
30

共有1个答案

斜烈
2023-03-14

您不需要所有这些循环,也不需要使用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();

或者,如果您使用的是Java8+,您可以使用stream(s)这样的stream)

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);
 类似资料:
  • 问题内容: 我有一个numpy的数组。我想创建一个新数组,该数组是每个连续三元组元素的平均值。因此,新数组将是原始数组大小的三分之一。 举个例子: 应该返回数组: 有人可以建议一种有效的方法吗?我在画空白。 问题答案: 如果数组的长度可被3整除: 重塑为高维数组,然后对附加维之一执行某种形式的归约运算是numpy编程的主要内容。

  • 如何移除第一个数组但返回减去第一个元素的数组 在我的示例中,当删除第一个元素时,我应该得到

  • 本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因

  • 我被分配了一项编程任务,但我被卡住了。其说明如下: 有一个名为“秘密圣诞老人”(给他们礼物)的游戏,有很多孩子参加。对于每个参与的孩子,都有一个来自参与孩子的秘密圣诞朋友。我必须编写一个程序,为每个参与的孩子挑选一个秘密的圣诞老人朋友。 示例:如果Bob,Alice,John和George是参与的孩子,在随机选择之后, 输出可能看起来像 具有相同输入的连续两次程序运行不应有相同的结果。 我的想法是

  • 问题内容: 如果我有: 里面有双精度值,我应该怎么做才能将所有ArrayList元素加起来? 如? 问题答案: 两种方式: 使用索引: 使用“针对每个”样式:

  • 返回数组中的每个第 n 个元素。 使用 Array.filter() 创建一个包含给定数组的每个第 n 个元素的新数组。 const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); everyNth([1, 2, 3, 4, 5, 6], 2); // [ 2, 4, 6 ]