做Mooc课程,我真的是编程新手,我只是不明白为什么它告诉我这是错误的。 4、3、6、1 的平均值是正确的,但当它测试 12、2、8、0 时,平均值不正确。
public class Averaging {
public static int sum(int number1, int number2, int number3, int number4) {
return number1 + number2 + number3 + number4;
}
public static double average(int number1, int number2, int number3, int number4) {
int count = 0;
if (number1 != 0) {
count++;
}
if (number2 != 0) {
count++;
}
if (number3 != 0) {
count++;
}
if (number4 != 0) {
count++;
}
double total = sum(number1, number2, number3, number4);
double average = (double) total / count;
return average;
}
public static void main(String[] args) {
double result = average(4, 3, 6, 1);
System.out.println("Average: " + result);
}
}
本来我有total = sum(4, 3, 6, 1);改为 total = sum(number1, number2, number3, number4);这解决了一些问题。
average(4, 3, 6, 1) // result: 3.5 ; expected: 3.5
average(12, 2, 8, 0) // result: 7.33333; expected: 5.5
您正在计算平均值,应包括零。
如果您想保持代码结构不变,您可以简单地验证数字中是否存在值,而不是验证它们是否等于零。
所以你可以替换这些支票:
if (number1 != 0)
通过
if (number1 != null)
你会得到正确的平均值。