Java,平均数字列表

时间:2012-07-11 20:38:13

标签: java average

在以下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");
    }
}

4 个答案:

答案 0 :(得分:10)

你实际上并没有将这些数字汇总在一起。

应为sum += numbers[i];

不是sum = numbers[i];

您似乎也试图这样做两次,这是不必要的。

答案 1 :(得分:1)

你总和两次(第二次for循环)并错误地执行:
sum = numbers[n];
而不是:
sum += numbers[n];

您应该将代码更改为:

...
         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];
         }

         // SECOND FOR LOOP REMOVED !!!

         average = sum / 10;
         System.out.println("Average temp = " + average);

        ...

答案 2 :(得分:1)

您错过了+

sum = numbers[n];

需要

sum += numbers[n];

这没什么,

 for (int i = 0; i < numbers.length; i++) {
    sum = numbers[i];
 }

答案 3 :(得分:-1)

替换

average = sum / 10;

average = sum / 10.0;