2017-09-30 16 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(); 
來解決這樣做
相關問題