我正在尝试创建一个方法,它将整数k和一个整数数组作为输入,然后返回前k个元素的平均值,然后返回下一个k元素的平均值等等。我不知道为什么我的代码无效。
好像没人问我的问题。 问题是从输入数组xs中一次找到k个元素的平均值。然后形成另一个数组,其中包含averagek的值(计算的k个元素的平均值)。
static int[] averagek(int k, int[] xs) {
int[] average = new int[xs.length-k+1];
for(int i = 0; i < xs.length-k+1; i++) {
int sum = 0;
for (int j = i; j<i+k-1; j++) {
sum = sum + xs[j];
}
average[i] = (sum/k);
}
return average;
}
答案 0 :(得分:0)
乍一看,我只看到一个明显的问题:这个:
for (int j = i; j<i+k-1; j++) {
应该是这样的:
for (int j = i; j < i + k; j++) {
或者这个:
for (int j = i; j <= i + k - 1; j++) {
(当前版本同时存在严格的不等式<
和-1
,将会错过要平均的组中的最后一个元素。)
但也可能存在其他问题。我建议优秀的博文https://ericlippert.com/2014/03/05/how-to-debug-small-programs/来学习如何调试它们。
顺便说一句,我还会注意到int
可能不是表示一组整数平均值的适当数据类型;例如,2
和3
的整数算术平均值为2
,因为整数中没有2.5
。因此,您可能希望切换到double[]
,并通过编写average[i] = (sum * 1.0 / k);
强制浮点运算。 (由你决定。)