2014-01-04 4 views
1

Не знаю, как решить эту ошибку вообще. Попробуйте создать среднее значение, используя список Array. Второй список кода - это (тестер main []). Как вы видите, ArrayList был создан и значения массива. (Не знаю, если есть отдельный тег ArrayList и массив, так что я отправляю в обоих.)Двойной не может быть разыменован [Arraylist]

** 
* A mutator method which calculates the average annual electricity bill. 
* @param monthlyBill an ArrayList containing the monthly bills for home electricity use. 
* @return the average monthly electricity bill. 
*/ 
public double calcAverageBill(ArrayList<Double> monthlyBill) 
{ 
    double sum=0; 
    if (!monthlyBill.isEmpty()) 
    { 
    for (double month: monthlyBill ) 
    { 
     sum+=month; 
    } 

    return (sum.doubleValue())/ monthlyBill.size(); 
} 
} 

public static void main(String[ ] args) 
{ 
CO2FromElectricity CO2 = new CO2FromElectricity(); 

     ArrayList<Double> monthlyBill = new ArrayList<Double>(); 


     monthlyBill.add(279.41); 
     monthlyBill.add(238.03); 
     monthlyBill.add(248.64); 
     monthlyBill.add(258.73); 
     monthlyBill.add(395.48); 
     monthlyBill.add(419.91); 
     monthlyBill.add(431.15); 
     monthlyBill.add(407.56); 
     monthlyBill.add(417.14); 
     monthlyBill.add(308.35); 
     monthlyBill.add(337.91); 
     monthlyBill.add(320.77); 
+4

Что вы думаете это 'sum.doubleValue()' делает? –

+0

Это дает мне примитивный тип данных @SotiriosDelimanolis – Galaga

+1

@Galaga Это уже примитивный тип данных. –

ответ

2

Вы отсутствовали фигурную скобку (вы не закроете if), а ваш sum.doubleValue() неверен (потому что sum уже является примитивным «двойным»).

public double calcAverageBill(java.util.List<Double> monthlyBill) { 
    double sum = 0; 
    if (!monthlyBill.isEmpty()) { 
    for (double month : monthlyBill) { 
     sum += month; 
    } 
    } 
    return (sum/monthlyBill.size()); 
} 
+2

Не нужно указывать 'monthBill.size()', чтобы удвоиться здесь. –

2

Простейшим просто

// generic method to calculate an average of an Iterable/List of Double. 
public static double average(Iterable<Double> nums) { 
    double sum = 0; 
    for (double d : nums) 
     sum += d; 
    return sum/nums.size(); 
} 
1

Использование и stream класс:

return monthlyBill == null ? 0 : monthlyBill.stream() 
              .mapToDouble(Double::doubleValue) 
              .summaryStatistics() 
              .getAverage(); 
Смежные вопросы