K运行平均Java

时间:2016-10-29 16:55:48

标签: java average

我正在尝试创建一个方法,它将整数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;
}

1 个答案:

答案 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可能不是表示一组整数平均值的适当数据类型;例如,23的整数算术平均值为2,因为整数中没有2.5。因此,您可能希望切换到double[],并通过编写average[i] = (sum * 1.0 / k);强制浮点运算。 (由你决定。)