954,523 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

average of an array

So ive been trying to get an average of this array needed, and I seem to be having trouble with it. So far, my current code just adds the numbers up, but doesnt really average them out at all:

import java.util.Scanner;
import java.util.Arrays;

public class Grades {
	
	public static void main (String[] args)
	{
		double result = 0;
		Scanner scan = new Scanner(System.in);
		
		float[] grades = new float[100];
		
		for (int i = 0; i < grades.length; i++) {
			System.out.print("Enter a grade between 0.0 - 100.0 (enter -1 to quit): ");
			grades[i] = scan.nextFloat();
			if(grades[i] == -1)break;
			result = result + grades[i];
	
		}
		System.out.println("Average of Grades: " + result / grades.length);
		
}
}


and the result is as follows:

Enter a grade between 0.0 - 100.0 (enter -1 to quit): 30.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): 50.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): 60.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): -1
Average of Grades: 1.4

any help would be appreciated.

Bowsan22
Newbie Poster
4 posts since Sep 2011
Reputation Points: 10
Solved Threads: 0
 

You are dividing by the length of the grades array, but not all of those elements have a value. You need to divide by the actual number of entries the user has added.

Ezzaral
Posting Genius
Moderator
15,986 posts since May 2007
Reputation Points: 3,250
Solved Threads: 847
 

How would I go about doing that? (sorry, noobie programmer)

Bowsan22
Newbie Poster
4 posts since Sep 2011
Reputation Points: 10
Solved Threads: 0
 

Seems like counting them might be useful?

Ezzaral
Posting Genius
Moderator
15,986 posts since May 2007
Reputation Points: 3,250
Solved Threads: 847
 

I mean is there a way to count the number of grades entered? I can enter however many I want up to 100, but im clueless on how to get it to see the amount of grades that were entered.

Bowsan22
Newbie Poster
4 posts since Sep 2011
Reputation Points: 10
Solved Threads: 0
 

30 + 50 + 60 = 140
140 / 100 (the number of elements in your array) = 1.4
Keep track of how many grades are being entered.
Line 12: int count = 0;
Line 18: count++;
Line 20: result / count

hfx642
Posting Pro
515 posts since Nov 2009
Reputation Points: 248
Solved Threads: 105
 

> im clueless on how to get it to see the amount of grades that were entered
Seems like a fairly simple task for a variable.

Edit: Ah, well so much for letting you see the solution for yourself, since hfx642 has decided to just hand you a fix.

Ezzaral
Posting Genius
Moderator
15,986 posts since May 2007
Reputation Points: 3,250
Solved Threads: 847
 

Define an int as a counter, then add one to a counter every time a new number is entered. Look at about line 16 to do this

NormR1
Posting Expert
Moderator
6,677 posts since Jun 2010
Reputation Points: 1,138
Solved Threads: 656
 
    double[] grades = new double[100];

        System.out.print("Enter a grade between 0.0 - 100.0 (enter -1 to quit): ");
    System.out.println();

    double sum = 0;
    double ave = 0;


    for (int i = 0; i < grades.length; i++)
    {           grades[i] = input.nextDouble();




        if(grades[i] == -1)
        {
            break;
        }

        sum = sum + grades[i];
        ave = sum / (i+1);
    }

    System.out.println("The Average the of Grades: " + ave);
Xinen
Newbie Poster
11 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: