Java 编码BAT AP-1,任务4?

Java 编码BAT AP-1,任务4?,java,arrays,average,Java,Arrays,Average,在AP-1类中,我对CodingBat的“分数储蓄”任务有一些问题。任务说明如下: 给定一个分数数组,计算上半部分和下半部分的int平均值,并返回较大的值。我们可以说下半部分从索引长度/2开始。数组长度将至少为2。要练习分解,请编写一个单独的助手方法int average(int[]scores,int start,int end){计算索引start..end之间元素的平均值。调用助手方法两次以实现scoresAverage()。在scoresAverage()之后编写助手方法方法。通常你会用

在AP-1类中,我对CodingBat的“分数储蓄”任务有一些问题。任务说明如下:

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

好的,按照规则,我编写了一个分解代码,但由于某种神秘的原因,它不能100%正常工作。下面是我的代码:

public int scoresAverage(int[] scores) {
    int startFirst=0;
    int endFirst=scores.length/2;
    
    int startSecond=scores.length/2;
    int endSecond=scores.length;
    
    int a=average(scores,startFirst,endFirst);
    int b=average(scores,startSecond,endSecond);
    
    int avg = Math.max(a,b);
    return avg;
}

public int average(int[] scores, int start, int end) {
    int count=0;
    for (int i=start;i<end;i++){
        count+=scores[i];
    }
    return count/end;
}
public int scoresAverage(int[]分数){
int startFirst=0;
int endFirst=分数。长度/2;
int startSecond=scores.length/2;
int endSecond=分数.length;
int a=平均值(分数,开始第一,结束第一);
int b=平均值(分数、开始秒、结束秒);
int avg=数学最大值(a,b);
返回平均值;
}
公共整数平均值(整数[]分数,整数开始,整数结束){
整数计数=0;

对于(int i=start;i我想你的问题是当你实际计算长度的平均值时。我是这样做的;使用它时不要感到压力

int average( int[] scores, int start, int end ) {
  int sum = 0;
  for ( int i = start; i < end; ++i ) {
    sum += scores[i];
  }
  return ( sum / ( end - start ) );
}

它可以工作,谢谢!:)我假设问题出在第二次调用上,其中参数end实际上是数组的总长度,包括不应该包括的数组的第一部分…我怎么会错过这个???是的,这是正确的。错误会发生在每个人身上;不要担心。
public int scoresAverage(int[] scores) {
  int a1 = average( scores, 0, scores.length / 2 );
  int a2 = average( scores, scores.length / 2, scores.length );
  return ( a1 > a2 ) ? a1 : a2;
}