给定整数的平均总数是多少?

时间:2015-10-26 20:50:13

标签: java

我必须使用静态方法TotalAverage(int n)来计算数字0 + 1 + 2 + .... + n的平均数字总数。因此,totalAverage(19)将被计算为(0 + 1 + ... + 9 + 1 + ... + 10)/ 20.0。我设法使用以下代码完成了大部分工作:

public static double TotalAverage(int n) {
    double total = 0;
    int count = 0;
    while (n >= 0) {
        total += n % 10;
        n = n - 1;
        count++;
    }
    return total / count;
}

适用于最多9的数字,但是对于较大的数字我得到的结果不正确。我意识到,一旦while语句达到10%10,它就会增加0而不是10,但我无法弄清楚如何正确地做到这一点。

2 个答案:

答案 0 :(得分:1)

如果您要对数字的所有数字求和,则代码中的错误为

total += n % 10;

只从n获得一位数字。使用一些循环从n获取所有数字而不进行修改(因为如果修改n,外部循环将会中断)。尝试:

int temp = n;
while(temp>0) {
   total += temp % 10; //add next digit
   temp /= 10;
}

答案 1 :(得分:0)

您可以使用单独的方法进行数字求和。这样的事情会起作用。

private static int digitSum(int a) {
    return a < 10 ? a : a%10 + digitSum(a/10);
}

然后你可以替换

total += n % 10

total += digitSum(n);