#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; это должно быть anint
.3. Добавление ‘else break;’ сделало бы то, что предложил Стивен, для завершения при первом нуле.