2013-03-26 2 views
0

Я пытаюсь создать статический метод в классе, которому передается массив объектов массива и возвращает среднее значение объектов в массиве.Создание метода для возврата среднего значения массива

public static double calcAverage() { 
    int sum = 0; 
    for (int i=0; i < people.length; i++) 
      sum = sum + people[i]; 
    double calcAverage() = sum/people.length 
    System.out.println(people.calcAverage()); 
} 

Код получает ошибки компиляции, но я направляюсь в правильном направлении?

+0

Похоже, что у вас будет бесконечная рекурсия, как только вы ее скомпилируете. Переместите 'println' в другое место. Возможно, в «главном». – nattyddubbs

+1

double calcAverage() неверно, объявите переменную double avgVal = sum/people.length; и распечатать avgVal – Abi

+0

Как/где объявляются люди? –

ответ

1
public static double calcAverage() { 
    int sum = 0; 
    for (int i=0; i < people.length; i++) 
      sum = sum + people[i]; 
    double calcAverage() = sum/people.length 
    System.out.println(people.calcAverage()); 
} 

Изменить

double calcAverage() = sum/people.length 

в

double average = sum/(double)people.length; 

(правильный способ объявить новую переменную)

Изменение

 System.out.println(people.calcAverage()); 

к

return average; 

(Если вы хотите, чтобы распечатать результат вызова функции, вы всегда должны сделать это за пределами функции, например, сделать это в main после вызова функции и хранения возвращаемого результата)

так что мы имеем:

public static double calcAverage() { 
    int sum = 0; 
    for (int i=0; i < people.length; i++) 
    { 
     sum = sum + people[i]; 
    } 
    double average = sum/(double)people.length; 
    return average; 
} 
+0

Хм .. по какой-то причине он все еще не приемлет. Пытается выяснить, почему – aiuna

+0

@aiuna. Какое точное сообщение об ошибке и номер строки вы получаете? – Patashu

+0

понял, спасибо, много! – aiuna

1

ваши близкие. Однако я вижу несколько ошибок.

Сначала ваша сумма = сумма + человек [i];

люди [i] возвращает объект не целое число, поэтому добавление объекта к целой работе не будет выполняться.

Во-вторых, вы вызываете свой метод calcAverage() внутри метода calcAverage, который, вероятно, НЕ является тем, что вы хотите сделать. Это называется рекурсией, но я думаю, что вы должны вызывать метод вне calcAverage().

1
// pass people as a parameter 
public static double calcAverage(int[] people) { 
    // IMPORTANT: this must be a double, otherwise you're dividing an integer by an integer and you will get the wrong answer 
    double sum = 0; 
    for (int i=0; i < people.length; i++) { 
     sum = sum + people[i]; 
    } 
    // remove the() 
    double result = sum/people.length; 
    System.out.println(result); 

    // return something 
    return result; 
} 


// example 
int[] myPeople = {1,2,3,4,5,6,7,8}; 
double myPeopleAverage = calcAverage(myPeople); 
+0

пришлось исправить некоторые вещи на моем часть, спасибо большое – aiuna

Смежные вопросы