2017-09-30 20 views
0

初学者在这里。我试图找到可能解决这个问题的任何问题,但是我不能,所以如果这个问题最终成为重复,我会提前道歉。访问ArrayList中每个数组中的第一个元素并对其进行平均处理

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

我正在寻找一种方法能够确定平均totalPay,平均basePay和平均小时工作, 我尝试使用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,则该函数应该平均的总工资,基本工资和工时)
请输入一个基本工资:
请输入工作小时数:
总收入为$ -100.0至时薪为$ 10.0 /小时

请输入基本工资:
请输入工作小时数:
总收入为$ 1000.0和时薪为$ 20.0 /小时(最大总薪酬不能超过
$ 1000)
请输入基本工资:
请输入工作小时数:
平均总薪酬为:2250.0
平均基本工资为:1125.0
的工作小时数平均为:112.5

如果我算个用手è平均水平,他们应该是总薪酬
$ 550为基本工资
$ 250和
30工作时数

+2

你得到了什么输出,你的预期输出是什么? – user2023608

+1

你可以分享'pay'' paym'' payList'的定义吗? –

+0

@RajeevRanjan ArrayList payList = new ArrayList (); \t \t Double [] pay = new Double [3]; –

回答

1

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

可以在一个迭代

double avgTotalPay = 0.0; 
double avgBasePay = 0.0: 
double avgHrsWorked = 0.0; 
for (Double pay[] : payList) { 
    avgTotalPay += pay[0]; 
    avgBasePay += pay[1]; 
    avgHrsWorked += pay[2]; 
} 
avgTotalPay /= payList.size(); 
avgBasePay /= payList.size(); 
avgHrsWorked /= payList.size(); 
来解决这样做
相关问题