2013-04-12 8 views
0

Я работаю над проблемами 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); 
} 

ответ

4

sum/scores.length бы в среднем сумма всех чисел; Вы хотите sum/(end - start) усреднить сумму подмножества чисел

+0

+1 Я хотел бы также сделать '' sum' в long', чтобы избежать переполнения. –

+1

Я бы сделал sum float/double type, а затем вернул округленное значение. Потому что, как это, среднее значение (как двойное) 2,9 будет возвращено как 2 вместо 3! – MalaKa

+0

@MalaKa Это похоже на школьное задание, и поскольку округление не указано, профессор, вероятно, не хочет, чтобы в вычислении использовались удвоения. – NominSim

0

Это позволит получить в среднем каждой половине:

return sum/(scores.length/2) 
Смежные вопросы