Я работаю над проблемами Java на codingbat.com и остановился на этом, scoresAverage. Поскольку описание упражнения немного сложнее, я просто просто вставить его здесь:Средние значения и массивы (Codingbat: scoresAverage)
Учитывая массив оценки, вычислить среднее Int первой половины и во второй половине, и вернуться в зависимости от того больше. Мы скажем, что вторая половина начинается с длины индекса/2. Длина массива будет равна наименьшим 2. Чтобы практиковать разложение, напишите отдельный вспомогательный метод
int average (int [] scores, int start, int end) {который вычисляет среднее значение элементов между индексами start..end , Дважды позвоните вашему вспомогательному методу , чтобы реализовать scoresAverage(). Напишите ваш помощник метод после вашего метода scoreAverage() в текстовой области JavaBat. Обычно вы вычисляете средние значения с удвоениями, но здесь мы используем ints , поэтому ожидаемые результаты точны.
Код, который я до сих пор не возвратил, не вызывает ошибок, но числа, которые он возвращает, неверны. Кто-нибудь может мне с этим помочь? Моя попытка код выглядит следующим образом:
public int scoresAverage(int[] scores) {
int mid = scores.length/2;
int average1 = average(scores, 0, mid);
int average2 = average(scores, mid, scores.length);
return Math.max(average1,average2);
}
public int average(int[] scores, int start, int end){
int sum = 0;
for (int i=start; i<end; i++){
sum += scores[i];
}
return sum/(scores.length);
}
+1 Я хотел бы также сделать '' sum' в long', чтобы избежать переполнения. –
Я бы сделал sum float/double type, а затем вернул округленное значение. Потому что, как это, среднее значение (как двойное) 2,9 будет возвращено как 2 вместо 3! – MalaKa
@MalaKa Это похоже на школьное задание, и поскольку округление не указано, профессор, вероятно, не хочет, чтобы в вычислении использовались удвоения. – NominSim