Поиск среднего значения в частично заполненном массиве

#java #arrays

#java #массивы

Вопрос:

Идея состоит в том, чтобы создать статический метод, который будет вычислять среднюю зарплату для частично заполненного массива. Предположим, что numEmployees содержит количество элементов в массиве, которые имеют действительные данные. numEmployees передается методу.

  public static double getAverage(double[ ] numEmployees)
{
double total = 0;  
 double average;
for (int i = 0; i < numEmployees.length; i  )
total  = numEmployees[i];

average = total / numEmployees.length;

return average;
}
  

Нужно ли мне добавлять часть в метод, который подсчитывает заполненный массив?
Нравится:

  int count=0;
 int p=0;
 if (numEmployees[p]>0)
 {
 count  ;
 p  ;
 }
  

или я должен добавить часть в свой цикл for внутри сообщения и изменить мое общее значение на это:

 for (int i = 0; i < numEmployees.length || numEmployees>0; i  )
 total  = numEmployees[i];
  

Чем дальше вниз

  average = total / i;
  

Комментарии:

1. PS Гораздо лучшим названием для массива «numEmployees» было бы «employeeSalary». И если вы знаете о каждом сотруднике больше, чем его зарплата, подумайте о создании класса Employee .

Ответ №1:

 public static double getAverage(double[] numEmployees)
{
    double total = 0; 
    double count = 0; 
    for (int i = 0; i < numEmployees.length; i  )
        if (numEmployees[i] > 0) {
            total  = numEmployees[i];
            count  ;
        }

    return total / count;
}
  

Обратите внимание, что если после первого 0 больше не может быть значений, также полезно завершить цикл при обнаружении одного. То, что я написал здесь, ищет любое значение, большее 0, независимо от того, где встречаются 0.

Комментарии:

1. Спасибо, приятель, я так и думал, но не был уверен

2. 1, это правильный подход, но нет причин count , по которым должно быть double; это должно быть an int .

3. Добавление ‘else break;’ сделало бы то, что предложил Стивен, для завершения при первом нуле.