jaielob
jaielob

Reputation: 551

Java, averaging a list of numbers

In the following Java code, my average temperature is 1 decimal place off.

For example Instead of being 69.0 it's 6.9.

The input can be any 10 numbers. So lets say I input 10 temperatures and each 1 is 10 degrees. The total for the 10 inputs is 100, so the average should be 10 but instead I'm receiving an average of 1.0.

Code:

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

Upvotes: 0

Views: 3255

Answers (4)

Nir Alfasi
Nir Alfasi

Reputation: 53565

You sum twice (second for-loop) and do it wrongly with:
sum = numbers[n];
instead of:
sum += numbers[n];

You should change your code to:

...
         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);

        ...

Upvotes: 1

Andrew
Andrew

Reputation: 13863

You are missing a +

sum = numbers[n];

needs to be

sum += numbers[n];

This does nothing,

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

Upvotes: 1

Rob Wagner
Rob Wagner

Reputation: 4421

You're not actually summing the numbers together.

It should be sum += numbers[i];

not sum = numbers[i];

You also appear to be attempting to do this twice, which is unnecessary.

Upvotes: 10

Lars Kotthoff
Lars Kotthoff

Reputation: 109292

Replace

average = sum / 10;

with

average = sum / 10.0;

Upvotes: -1

Related Questions