我必须使用静态方法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,但我无法弄清楚如何正确地做到这一点。
答案 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);