【发布时间】:2014-06-09 20:38:36
【问题描述】:
我对 CodingBat 的“scoresAverage”任务有一些问题,属于 AP-1 类别。任务内容如下:
给定一个分数数组,计算前半部分和后半部分的 int 平均值,并返回较大的那个。我们会说后半部分从索引长度/2 开始。数组长度至少为 2。要练习分解,请编写一个单独的辅助方法
int average(int[] scores, int start, int end) { 计算索引 start..end 之间元素的平均值。调用您的辅助方法两次以实现 scoreAverage()。在 JavaBat 文本区域中的 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;
}
某些测试的输出正常,但其他测试却不行,我看不出原因!你可以自己在 CodingBat 上测试我的代码:http://codingbat.com/prob/p123837
请不要给我写完全不同的代码,除非我的代码真的没用!我知道必须有数百万种方法来解决这个问题,而且我也认为我的方法不是最好的方法之一(我是个菜鸟),但我仍然想知道我的代码的问题是什么地方。不过,我们非常欢迎更好/更简单的替代方案。
提前谢谢你。 :)
【问题讨论】: