【发布时间】:2012-07-11 20:38:13
【问题描述】:
在下面的 Java 代码中,我的平均温度是小数点后 1 位。
例如,不是69.0,而是6.9。
输入可以是任意 10 个数字。所以假设我输入了 10 个温度,每个 1 是 10 度。 10 个输入的总数为 100,因此平均值应为 10,但我收到的平均值为 1.0。
代码:
import java.util.Scanner;
public class NumberAboveAverage {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int TotalTemps = 10;
double[] numbers = new double[TotalTemps];
double sum = 0;
double average = 0;
double max = 0;
for (int n = 0; n < numbers.length; n++) {
System.out.print("Enter a temperature: ");
numbers[n] = input.nextInt();
if (numbers[n] > max) {
max = numbers[n];
}
sum = numbers[n];
}
for (int i = 0; i < numbers.length; i++) {
sum = numbers[i];
}
average = sum / 10; //average is not an average of the numbers.
System.out.println("Average temp = " + average);
int count = 0;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] > average) {
count++;
}
}
System.out.println(count + " days were above average");
}
}
【问题讨论】:
-
如果没有真实数据可以查看,没有人可以帮助您。请显示您的输入数据、结果和您的预期。此外,您的问题可能是由于浮点数无法准确表示十进制数字这一众所周知的问题,再加上舍入错误。
-
@jaielob 这是因为您没有将它们加在一起。它到达末尾并将 10 除以总数 (10),而不是总和 (100) 除以总数。尝试更多案例,您会发现这就是原因。