0

我正在处理codingbat.com 上的Java 问题,并在这个scoresAverage上停了下来。由于练习描述有点复杂,我将简单地粘贴在这里:

给定一个分数数组,计算前半部分和后半部分的 int 平均值,并返回较大的那个。我们会说后半部分从索引长度/2 开始。数组长度至少为 2。要练习分解,请编写一个单独的辅助方法
int average(int[] scores, int start, int end) { 计算索引 start..end 之间元素的平均值。调用您的辅助方法两次以实现 scoreAverage()。在 JavaBat 文本区域中的 scoresAverage() 方法之后编写您的辅助方法。通常你会用双精度计算平均值,但这里我们使用整数,所以预期的结果是准确的。

我到目前为止的代码没有返回任何错误,但它返回的数字不正确。谁能帮我这个?我的代码尝试如下:

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

2 回答 2

4

sum/scores.length将平均所有数字的总和;你想sum/(end - start)平均数字子集的总和

于 2013-04-12T13:59:05.737 回答
0

这将得到每一半的平均值:

return sum/(scores.length/2) 
于 2016-05-24T20:29:28.563 回答